Respuestas:
De la documentación del diseñador de plantillas Jinja2 :
{% if variable is defined %}
value of variable: {{ variable }}
{% else %}
variable is not defined
{% endif %}
{% if variable is not defined %}
para probar el inverso.
{% if variable is defined and variable %}
también verificaría el vacío
{% if variable is defined %}
es cierto si la variable es None
.
Como not is None
no está permitido, eso significa que
{% if variable != None %}
Es realmente tu única opción.
variable
siempre se evalúa True
cuando no es Ninguno, {% if variable != None %}
es equivalente a {% if variable %}
.
None
uso de minúsculasnone
{% if variable is not none %}
También podría definir una variable en una plantilla jinja2 como esta:
{% if step is not defined %}
{% set step = 1 %}
{% endif %}
Y luego puedes usarlo así:
{% 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 %}
De lo contrario (si no usaría {% set step = 1 %}
), el código superior arrojaría:
UndefinedError: 'step' is undefined
Considere usar un filtro predeterminado si es lo que necesita. Por ejemplo:
{% set host = jabber.host | default(default.host) -%}
o use más valores de respaldo con uno "codificado" al final como:
{% set connectTimeout = config.stackowerflow.connect.timeout | default(config.stackowerflow.timeout) | default(config.timeout) | default(42) -%}
{% if variable is defined %}
funciona para verificar si algo no está definido.
Puede salirse con la suya {% if not var1 %}
si predetermina sus variables a False, por ejemplo
class MainHandler(BaseHandler):
def get(self):
var1 = self.request.get('var1', False)