tutorial template jinja jinga for django jinja2

django - jinga - jinja for template



En Jinja2, ¿cómo se prueba si una variable no está definida? (6)

Considere usar filtro predeterminado si es lo que necesita. Por ejemplo:

{% set host = jabber.host | default(default.host) -%}

o algo así como:

{% set timeout = config.timeout | default(42) -%}

Al convertirme de Django, estoy acostumbrado a hacer algo como esto:

{% if not var1 %} {% endif %}

y hacer que funcione si no puse var1 en el contexto. Jinja2 me da un error indefinido. ¿Hay una manera fácil de decir {% if var1 == None %} o similar?



En la configuración de entorno, hemos undefined = StrictUndefined , lo que impidió que los valores indefinidos se establezcan en cualquier cosa. Esto lo solucionó:

from jinja2 import Undefined JINJA2_ENVIRONMENT_OPTIONS = { ''undefined'' : Undefined }


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


{% if variable is defined %} es verdadera si la variable es None .

Como not is None no está permitido, eso significa que

{% if variable != None %}

es realmente tu única opción.


{% if variable is defined %} funciona para verificar si algo no está definido.

Puede salirse con la suya usando {% if not var1 %} si predetermina sus variables a False eg

class MainHandler(BaseHandler): def get(self): var1 = self.request.get(''var1'', False)