Risposte:
Dalla documentazione del progettista del modello Jinja2 :
{% if variable is defined %}
value of variable: {{ variable }}
{% else %}
variable is not defined
{% endif %}
{% if variable is not defined %}
per testare l'inverso.
{% if variable is defined and variable %}
verificherebbe anche il vuoto
{% if variable is defined %}
è vero se la variabile è None
.
Poiché not is None
non è consentito, ciò significa che
{% if variable != None %}
è davvero la tua unica opzione.
variable
viene sempre valutato True
quando non è Nessuno, {% if variable != None %}
equivale a {% if variable %}
.
None
uso in minuscolonone
{% if variable is not none %}
Puoi anche definire una variabile in un modello jinja2 come questo:
{% if step is not defined %}
{% set step = 1 %}
{% endif %}
E poi puoi usarlo in questo modo:
{% 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 %}
Altrimenti (se non si utilizza {% set step = 1 %}
) il codice superiore genererebbe:
UndefinedError: 'step' is undefined
Prendi in considerazione l'utilizzo del filtro predefinito se è quello che ti serve. Per esempio:
{% set host = jabber.host | default(default.host) -%}
o usa più valori di fallback con "hardcoded" uno alla fine come:
{% set connectTimeout = config.stackowerflow.connect.timeout | default(config.stackowerflow.timeout) | default(config.timeout) | default(42) -%}
{% if variable is defined %}
lavora per verificare se qualcosa non è definito.
È possibile cavarsela utilizzando {% if not var1 %}
se si impostano le variabili su False, ad es
class MainHandler(BaseHandler):
def get(self):
var1 = self.request.get('var1', False)