Flask 上下文處理器

2021-08-10 17:34 更新

Flask 上下文處理器自動(dòng)向模板的上下文中插入新變量。上下文處理器在模板 渲染之前運(yùn)行,并且可以在模板上下文中插入新值。上下文處理器是一個(gè)返回字典 的函數(shù),這個(gè)字典的鍵值最終將傳入應(yīng)用中所有模板的上下文:

@app.context_processor
def inject_user():
    return dict(user=g.user)

上面的上下文處理器使得模板可以使用一個(gè)名為 user ,值為 g.user 的變量。 不過(guò)這個(gè)例子不是很有意思,因?yàn)?g 在模板中本來(lái)就是可用的,但它解釋 了上下文處理器是如何工作的。

變量不僅限于值,上下文處理器也可以使某個(gè)函數(shù)在模板中可用(由于 Python 允 許傳遞函數(shù)):

@app.context_processor
def utility_processor():
    def format_price(amount, currency=u'€'):
        return u'{0:.2f}{1}.format(amount, currency)
    return dict(format_price=format_price)

上面的上下文處理器使得 format_price 函數(shù)在所有模板中可用:

{{ format_price(0.33) }}

你也可以構(gòu)建 format_price 為一個(gè)模板過(guò)濾器(見(jiàn) 注冊(cè)過(guò)濾器 ), 但這展示了上下文處理器傳遞函數(shù)的工作過(guò)程。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)