Flask 2.0:版本新特性
使用下面的命令更新 Flask:
pip install -U flask
新特性
👀Changes:最大变化:大变化便是放弃对Python 2和3.5版本的支持。
基本的 async/await 支持(#3412)
可以定义异步视图(以及异步错误处理函数、异步请求钩子函数):
import asyncio
from flask import Flask
app = Flask(__name__)
@app.route('/')
async def say_hello():
await asyncio.sleep(1)
return {'message': 'Hello!'}
💡注意:需要安装依赖,命令:
pip install -U flask[async]
。
快捷路由装饰器(#3907)
新增了下面的快捷路由装饰器:
app.get()
app.post()
app.delete()
app.put()
app.patch()
使用 app.post()
等同于 app.route(methods=['POST'])
:
from flask import Flask
app = Flask(__name__)
@app.post('/')
def index():
return {'message': 'Hello!'}
💡Tips:如果需要处理多种方法类型的请求,请用
app.route()
装饰器。
支持嵌套蓝本(#593, #1548, #3923)
对于一个比较大的项目,一般会使用蓝本来组织不同的模块。而如果你的项目非常大,那么嵌套蓝本就可以派上用场了。借助嵌套蓝本支持,你可以在某个蓝本之内再创建多个子蓝本,对项目进行多层模块化组织(而且支持无限嵌套,你可以嵌套很多层):
parent = Blueprint("parent", __name__) # 创建父蓝本
child = Blueprint("child", __name__) # 创建子蓝本
parent.register_blueprint(child, url_prefix="/child") # 把子蓝本注册到父蓝本上
app.register_blueprint(parent, url_prefix="/parent") # 把父蓝本注册到程序实例上
这样在生成子蓝本的 URL 时需要传入完整的端点链:
url_for('parent.child.create')
/parent/child/create