簡體   English   中英

Python Flask,Jinja Global

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM