14

これはトルネードテンプレートです(たとえば、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

フラグがたくさんある場合(false)、キーワード引数が積み重なる可能性があります。テンプレートに存在しないかのように考えるように依頼する方法はありlogout_errorますか?False

4

4 に答える 4

17

使用をハッキングlocals().get()することは、それを行う1つの方法です。もう1つ、もう少しオーソドックスなのはを使用してtryいます。Tornadoテンプレートはこれをサポートしているため、次のことができます。

{% try %}
  {% if logout_error %}
    Oops! The logout failed. Please close all open documents and try again
  {% end %}
{% except %}
{% end %}
于 2012-04-13T13:27:27.083 に答える
15

使用できます

{% if locals().get('logout_error', False) %}

プロパティFalseが設定されていない場合は、必要な値に置き換えてください。

于 2012-04-13T10:50:11.063 に答える
1

{%if locals()。get('logout_error'、False)%}は、変数が** kwargsのように渡されないため、機能しません。

{%if globals()。has_key('logout_error')%}変数が個別に渡されるため、 https: //groups.google.com/forum/#!topic / python-tornado/dyl50NO3yzEこのページにはさらに多くの情報がありますこの問題についての議論。

于 2014-10-24T10:30:40.420 に答える
0

「トルネードウェイ」は、宣言されていない変数を持たないことです。変数を明示的に宣言する方が禅です。

回避策:

{% if 'grok' in globals() %}
  {{grok}}
{% end %}

{% if globals().get('grok_error', False) %}
  error message
{% end %}
于 2015-11-03T13:50:40.863 に答える