[英]Python Flask, Jinja Global
我目前正在使用Python Flask和Jinja2。 我的桌子上有一些消息。 我想基本上在菜單上有一個按鈕,其中包含用戶擁有的消息數。
我使用它來使側邊欄變為全局,因此它可以顯示在多個頁面上:app.jinja_env.globals.update(...)
這是我用來獲取消息數量的代碼: def message_notification(): c.execute("SELECT count(*) FROM messages WHERE read = 0 AND receiver = ?",(session['username'],)) msgnotifcation = c.fetchone() return msgnotifcation[0]
但是我收到此錯誤: RuntimeError: Working outside of request context.
還有其他方法可以做到這一點,因為我發現問題與session ['username']位有關。
您需要移動此代碼,以使其在模板開始呈現之前執行,即它將位於請求上下文內。
Flask提供了context_processor裝飾器來實現此目的。 http://flask.pocoo.org/docs/0.12/templating/#context-processors返回的值將在您的所有模板中可用,就像它們已從視圖中作為任何其他上下文項返回一樣。
@app.context_processor
def message_count():
value = ...your sql...
return dict(message_count=value)
然后,您可以在視圖中使用:
{{ message_count }}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.