web-dev-qa-db-fra.com

Jinja2 si la déclaration en vs est égale à dict

Je suis nouveau sur Jinja2 et l'utilise dans le cadre de Flask. J'ai deux déclarations ci-dessous. Celui avec "in" fonctionne. Celui avec "égal" ne l'est pas. La version égale obtient une erreur de syntaxe illustrée ci-dessous. Je suis curieux de savoir pourquoi, car la façon dont la version égale est écrite, pour moi au moins, est plus facile à lire.

{% if "SN" in P01["type"] %}
  {% include 'sn.html' %}
{% endif %}

{% if P01["type"] equals "SN" %}
  {% include 'sn.html' %}
{% endif %}

Le message d'erreur de jinja2.exceptions.TemplateSyntaxError

TemplateSyntaxError: jeton attendu "fin du bloc d'instructions", obtenu "égal"

Je vous remercie.

14
TimothySwieter

Dans Jinja2, vous utiliseriez == au lieu de equals, par exemple:

{% if P01["type"] == "SN" %}
  {% include 'sn.html' %}
{% endif %}

http://jinja.pocoo.org/docs/switching/#conditions

Je suis sûr que c'est ce que vous recherchez, mais vous devez noter que cela a une signification différente de "SN" in P01["type"], en utilisant in est un test de sous-chaîne, donc par exemple "foo" in "foobar" serait Vrai.

30
Andrew Clark