最近接触了机器学习项目线上服务部署相关的东西,想着做一个小的完整的机器学习项目类似于电影推荐那种,考虑到用flask来实现,所以记录下flask的相关知识。
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。
环境:pycharm
主程序:
# coding=utf-8
# hello world
from flask import Flask
#创建应用程序
app = Flask(__name__)
# 写一个函数来处理浏览器发送过来的请求
@app.route("/") #当访问网址时,默认执行下面函数
def index():
return 'weclome to Rocket!!!'
@app.route("/roc") #路由功能
def index1():
#这里处理业务逻辑
return '欢迎你!!!'
@app.route("/roc/qq")
def index2():
#这里处理业务逻辑
return 'hahaha!!!'
if __name__ == "__main__":
app.run() #启动应用程序
带html
主程序:
# coding=utf-8
# hello world
from flask import Flask,render_template,request
#创建应用程序
app = Flask(__name__)
# @app.route('/')
# def index():
# return render_template("Hello.html") #此时会自动找templates文件夹里面的Hello.html
# 把一个变量发送到页面
@app.route('/')
def index():
# 字符串
s = '你好我好大家好!'
# 列表
list =["人工智能","AI","ML","推荐算法"]
return render_template("Hello.html",jay = s,lst = list)
# 从页面接收数据
# 登录验证
@app.route('/val')
def index1():
return render_template("login.html")
@app.route('/login',methods = ['POST'])
def login():
# 接收数据
username = request.form.get("username")
password = request.form.get("pwd")
if username == '###' and password == '123':
return "sucessfully!!!"
else:
return render_template("login.html",msg = '登录失败,请重试!')
if __name__ == "__main__":
app.run(debug=True) #启动应用程序,不需要重启程序,刷新页面即可
hello.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="'#">{{jay}}</a> #超链接
<hr/>
{{lst}}
<hr/>
{% for item in lst %}
我:{{item}}
{% endfor %}
</body>
</html>
login.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="login" method="POST">
用户名 <input type="text" name="username"><br/>
密码 <input type="password" name="pwd"><br/>
<input type="submit" value="登录"><br/>
{{msg}}
</form>
</body>
</html>