这是一个龙卷风模板(比如说,在文件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
,如果它不存在?
答案 0 :(得分:17)
使用locals().get()
进行黑客攻击是一种方法。另一个更正统的是使用try
。 Tornado模板支持它,所以你可以:
{% try %}
{% if logout_error %}
Oops! The logout failed. Please close all open documents and try again
{% end %}
{% except %}
{% end %}
答案 1 :(得分:15)
您可以使用
{% if locals().get('logout_error', False) %}
如果未设置属性,则用您想要的值替换False
。
答案 2 :(得分:1)
{%if locals()。get('logout_error',False)%}不起作用,因为变量未传递,如** kwargs;
{%if globals()。has_key('logout_error')%}对我有用,因为我的变量是单独传递的, https://groups.google.com/forum/#!topic/python-tornado/dyl50NO3yzE此页面对此问题有更多的讨论。
答案 3 :(得分:0)
“龙卷风方式”是没有未声明的变量。将变量声明为明确更为禅宗。
解决方法:
{% if 'grok' in globals() %}
{{grok}}
{% end %}
{% if globals().get('grok_error', False) %}
error message
{% end %}