Відповіді:
З документації дизайнера шаблонів Jinja2 :
{% if variable is defined %}
value of variable: {{ variable }}
{% else %}
variable is not defined
{% endif %}
{% if variable is not defined %}
для тестування зворотного.
{% if variable is defined and variable %}
Також перевірили б на порожнечу
{% if variable is defined %}
вірно, якщо змінна є None
.
Оскільки not is None
це не дозволено, це означає, що
{% if variable != None %}
насправді ваш єдиний варіант.
variable
завжди оцінюється True
коли немає, немає, {% if variable != None %}
еквівалентно {% if variable %}
.
None
використовуєте малі регістриnone
{% if variable is not none %}
Ви також можете визначити змінну в шаблоні jinja2, як це:
{% 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
Подумайте про використання фільтра за замовчуванням, якщо це те, що вам потрібно. Наприклад:
{% set host = jabber.host | default(default.host) -%}
або використовувати більше резервних значень із "hardcoded" в кінці, наприклад:
{% set connectTimeout = config.stackowerflow.connect.timeout | default(config.stackowerflow.timeout) | default(config.timeout) | default(42) -%}
{% if variable is defined %}
працює, щоб перевірити, чи щось не визначено.
Ви можете піти з використання, {% if not var1 %}
якщо для змінних за замовчуванням встановлено значення False, наприклад
class MainHandler(BaseHandler):
def get(self):
var1 = self.request.get('var1', False)