我學(xué)習(xí)flask是跟著Miguel Grinberg的《Flask Web Development》上手的、書(shū)上都是選了一些更為方便實(shí)用的擴(kuò)展包進(jìn)行開(kāi)發(fā)的稳吮,跟著書(shū)中的項(xiàng)目做下來(lái)屋灌,能有了一個(gè)比較好的flask架構(gòu)方案莉钙,但對(duì)很多flask的機(jī)制還是很模糊纯路。最近自己在寫(xiě)一個(gè)小項(xiàng)目宛瞄,遇到許多坑缤骨,于是開(kāi)始邊看官方文檔邊繼續(xù)寫(xiě)山孔,以后也會(huì)記錄一些個(gè)人覺(jué)得比較好,比較有用的知識(shí)點(diǎn)荷憋。
今天發(fā)現(xiàn)了一個(gè)很有用的裝飾器 context_processor台颠,剛好解決了小項(xiàng)目中困擾我的一個(gè)問(wèn)題。主要有兩個(gè)作用:
- 可以向模板上下文中自動(dòng)注入變量,在模板中調(diào)用:
@app.context_processor
def inject_user():
return dict(user=g.user)
注意:返回值必須是一個(gè)dictionary
雖然這個(gè)例子的確沒(méi)啥實(shí)際意義(g 本來(lái)就可以在模板中直接調(diào)用)串前,但做例子說(shuō)明這點(diǎn)作用還是可以的
- 不但可以注入變量瘫里,還可以直接注入方法:
@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)