簡體   English   中英

在Tornado中處理未定義的模板變量

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

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