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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM