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