一個可能的替代方法是將一些回調(diào)函數(shù)綁定到 g 對象中。然后在
請求結(jié)束的時候調(diào)用他們。使用這種方法,您可以從應(yīng)用里的任何一個地方來指定
代碼延遲執(zhí)行。
裝飾器
下面的裝飾器就是關(guān)鍵,它將一個函數(shù)注冊到 g 對象上的
一個函數(shù)列表中:
from flask import g
def after_this_request(f):
if not hasattr(g, 'after_request_callbacks'):
g.after_request_callbacks = []
g.after_request_callbacks.append(f)
return f
from flask import request
@app.before_request
def detect_user_language():
language = request.cookies.get('user_lang')
if language is None:
language = guess_language_from_request()
@after_this_request
def remember_language(response):
response.set_cookie('user_lang', language)
g.language = language
更多建議: