在Jinja2中,如何testing一个variables是否是未定义的?
从Django转换,我习惯做这样的事情:
{% if not var1 %} {% endif %}
如果我没有把var1放到上下文中,它就可以工作。 Jinja2给了我一个未定义的错误。 有没有简单的方法来说{% if var1 == None %}
或类似?
从Jinja2 模板devise器文档 :
{% if variable is defined %} value of variable: {{ variable }} {% else %} variable is not defined {% endif %}
{% if variable is defined %}
如果variables是None
则为真。
由于not is None
不被允许,这意味着
{% if variable != None %}
真的是你唯一的select。
在环境设置中,我们有undefined = StrictUndefined
,防止未定义的值被设置为任何东西。 这固定了它:
from jinja2 import Undefined JINJA2_ENVIRONMENT_OPTIONS = { 'undefined' : Undefined }
你也可以像这样在jinja2模板中定义一个variables:
{% if step is not defined %} {% set step = 1 %} {% endif %}
然后你可以像这样使用它:
{% if step == 1 %} <div class="col-xs-3 bs-wizard-step active"> {% elif step > 1 %} <div class="col-xs-3 bs-wizard-step complete"> {% else %} <div class="col-xs-3 bs-wizard-step disabled"> {% endif %}
否则(如果你不使用{% set step = 1 %}
),上面的代码会抛出:
UndefinedError: 'step' is undefined
{% if variable is defined %}
工作来检查是否有未定义的东西。
如果你把variables默认为False,你可以使用{% if not var1 %}
class MainHandler(BaseHandler): def get(self): var1 = self.request.get('var1', False)
考虑使用默认筛选器,如果这是你所需要的。 例如:
{% set host = jabber.host | default(default.host) -%}
或类似的东西:
{% set timeout = config.timeout | default(42) -%}