我目前正在使用Python Flask和Jinja2。我有一张表有一些消息。我想在菜单上基本上有一个按钮,其中包含用户拥有的消息数量。
我已经使用它来使我的侧边栏全局化,因此它可以出现在多个页面上: app.jinja_env.globals.update(...)
这是我用来获取邮件数量的代码:
function constantTimePickPair
pairFound <- false
repeats <- 5 // Or enough to ensure certainty of a valid pair.
do repeats times
num1 <- random(A, B)
num2 <- random(A, B)
if (notAdjacent(num1, num2))
pairFound <- true
result <- (num1, num2)
end if
end do
if (NOT pairFound)
throw error "Pair not found."
end if
return result
end function
但是我收到此错误:
def message_notification():
c.execute("SELECT count(*) FROM messages WHERE read = 0 AND receiver = ?",(session['username'],))
msgnotifcation = c.fetchone()
return msgnotifcation[0]
有没有其他方法可以做到这一点,因为我发现问题与会话[&#39;用户名&#39;]位有关。
答案 0 :(得分:1)
您需要移动此代码,以便在模板开始渲染之前执行,即它将位于请求上下文中。
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 }}