‘se’ istruzione in jinja2 modello

Sto cercando di scrivere un’istruzione if in jinja modello

{% for key in data %}
    {% if key is 'priority' %}
        <p>('Priority: ' + str(data[key])</p>
    {% endif %}
{% endfor %}

la dichiarazione sto cercando di tradurre in python è

if key == priority:
    print(print('Priority: ' + str(data[key]))

Questo è l’errore che ricevo:

TemplateSyntaxError: previsto token ‘nome’, ha ‘stringa’

  • is dovrebbe essere usato quando si confrontano su un tipo, ad esempio if var is list. Nel tuo caso si desidera key == 'priority'.
  • In python il test if var is list non controlla se var è una lista … controlla se var è l’esatto tipo di list … in jinja2, if var is list cerca di un test denominato list … il che è improbabile, esiste a tutti!!!!
  • Ci dispiace, significava type(var) is list.
InformationsquelleAutor Luisito | 2016-11-15



2 Replies
  1. 29

    Perché il ciclo?

    Si potrebbe semplicemente fare così:

    {% if 'priority' in data %}
        <p>Priority: {{ data['priority'] }}</p>
    {% endif %}

    Quando si erano originariamente facendo il confronto di stringhe, si dovrebbe utilizzare == invece.

    • Ho downvoted per ora, non c’è bisogno che le virgolette intorno Priorità, o la str all’interno del {{ }}. cioè dovrebbe essere <p>Priority: {{ data["priority"] }}</p>
    • Sì, hai ragione. Corretto.
    • e ho urtato è 🙂
  2. 10

    Abbiamo bisogno di ricordare che il {% endif %} viene dopo il {% else %}.

    Quindi questo è un esempio:

    {% if someTest %}
         <p> Something is True </p>
    {% else %}
         <p> Something is False </p>
    {% endif %}
    • In Jinja, se la dichiarazione non termina con i due punti : come nel tuo esempio.

Lascia un commento