使用下面的命令更新 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