Flask 2.0:版本新特性

Blog:博客园 个人

使用下面的命令更新 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
posted @ 2022-03-07 14:08  不羁的罗恩  阅读(955)  评论(0编辑  收藏  举报