官方文档:https://dormousehole.readthedocs.io/
参考文档:https://www.yiibai.com/flask/flask_environment.html
什么是Flask?
Flask是一个轻量级的可定制框架,是目前十分流行的web框架 ,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。
简单样例
from flask import Flask
app = Flask(__name__) #实例化
#Flask类的route()函数是一个装饰器,它告诉应用程序哪个URL应该调用相关的函数。
@app.route('/') #'/'URL与下面定义的test()方法绑定
#如果是@app.route('/hello')则访问的URL是"http://127.0.0.1:5000/hello"
def test():
return 'hello world'
if __name__ == '__main__':
app.run(host="127.0.0.1",port=5000) #host,port为默认值
结果如下:
Flask变量规则
通过把URL的一部分标记为 <variable_name> 就可以在URL中添加变量。标记的部分会作为关键字参数传递给函数。 通过使用 <converter:variable_name >,可以选择性的加上一个转换器,为变量指定规则。
from flask import Flask
from markupsafe import escape
app = Flask(__name__)
@app.route('/user/<username>')
def show_user(username):
return 'User %s' % username
@app.route('/post/<int:post_id>')
def show_post(post_id):
return 'Post %d' % post_id
@app.route('/path/<path:subpath>')
def show_subpath(subpath):
# show the subpath after /path/
return 'Subpath %s' % escape(subpath)
if __name__ == '__main__':
app.run(host="127.0.0.1",port=5000)
结果如图:
转换器类型:
类型 | 解释 |
---|---|
string | (缺省值) 接受任何不包含斜杠的文本 |
int | 接受正整数 |
float | 接受正浮点数 |
path | 类似 string ,但可以包含斜杠 |
uuid | 接受 UUID 字符串 |
唯一的URL/重定向行为
from flask import Flask
from markupsafe import escape
app = Flask(__name__)#实例化
@app.route('/projects/')
def projects():
return 'The project page'
@app.route('/about')
def about():
return 'The about page'
if __name__ == '__main__':
app.run(host="127.0.0.1",port=5000)#host,port为默认值
访问http://127.0.0.1:5000/projects时末尾没有/,Flask 会自动进行重定向,帮你在尾部加上一个斜杠。
访问http://127.0.0.1:5000/about时,如果加上/ 会得到一个 404 错误 。这样可以保持 URL 唯一,并帮助 搜索引擎避免重复索引同一页面。
结果如下:
HTTP方法
建立一个login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action = "http://localhost:5000/login" method = "post">
<p>输入姓名:</p>
<p><input type = "text" name = "name" value=""/></p>
<p><input type = "submit" value = "提交" /></p>
</form>
</body>
</html>
建立一个demo.py
from flask import Flask, redirect, url_for, request
app = Flask(__name__)
@app.route('/success/<name>')
def success(name):
return 'hello %s' % name
@app.route('/login',methods = ['POST', 'GET'])
def login():
if request.method == 'POST':
user = request.form['name']
return redirect(url_for('success',name = user))
else:
user = request.args.get('name')
return redirect(url_for('success:',name = user))
if __name__ == '__main__':
app.run(debug = True)
运行demo.py后浏览器打开login.html,输入名字点击提交。
结果如图: