[英]Handling an undefined template variable in Tornado
這是一個龍卷風模板(例如,在文件logout.html中)我在注銷過程中的錯誤渲染:
{% if logout_error %}
Oops! The logout failed. Please close all open documents and try again
{% end %}
這可以使用
self.render("logout.html", logout_error=True)
如果注銷成功,我必須這樣做
self.render("logout.html", logout_error=False)
如果我忽略logout_error=False
,我明白了
NameError: global name 'logout_error' is not defined
如果有很多標志(都是假的),關鍵字參數可能會堆積起來。 有沒有辦法我可以讓模板將logout_error
視為False
如果它不存在?
黑客使用locals().get()
是一種方法。 另一個更正統的是使用try
。 Tornado模板支持它,因此您可以:
{% try %}
{% if logout_error %}
Oops! The logout failed. Please close all open documents and try again
{% end %}
{% except %}
{% end %}
您可以使用
{% if locals().get('logout_error', False) %}
如果未設置屬性,則用您想要的值替換False
。
{%if locals()。get('logout_error',False)%}不起作用,因為變量沒有傳遞,如** kwargs;
{%if globals()。has_key('logout_error')%}對我有用,因為我的變量是單獨傳遞的, https: //groups.google.com/forum/#!topic / python-tornado / dyl50NO3yzE此頁面包含更多內容討論這個問題。
“龍卷風方式”是沒有未聲明的變量。 將變量聲明為顯式更為禪宗。
解決方法:
{% if 'grok' in globals() %}
{{grok}}
{% end %}
{% if globals().get('grok_error', False) %}
error message
{% end %}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.