Le fichier modèle que j'ai créé contient ceci:
{% if type({'a':1,'b':2}) is dict %}
print "Oh Yes!!"
{% else %}
print "Oh No!!!"
{% endif %}
Puis Jinja2 répond en disant:
TemplateAssertionError: no test named 'dict'
Je suis complètement nouveau sur Jinja2 et Flask
Vous recherchez le mapping
test :
{% if {'a': 1, 'b': 2} is mapping %}
"Oh Yes!"
{% else %}
"Oh No!"
{% endif %}
Jinja n'est pas Python cependant, donc vous n'avez pas accès à toutes les commandes internes (type
et print
n'existent pas, par exemple, sauf si vous ajoutez les le contexte . Dans Flask, vous faites cela avec le context_processor
décorateur ).
Vous n'avez en fait pas besoin de print
du tout. Par défaut, tout est sorti (sauf si vous êtes dans un modèle enfant qui extends
un parent, auquel cas vous pouvez le faire des choses intéressantes comme le NULL Master fallback parce que seuls les blocs avec des noms disponibles dans le modèle principal est sorti).
Que diriez-vous:
{% if {'a':1,'b':2} is mapping %}
print "Oh Yes!!"
{% else %}
print "Oh No!!!"
{% endif %}
voir Liste des tests intégrés pour référence.
Si vous souhaitez obtenir un type personnalisé, vous pouvez accéder au nom du champ comme dans cet exemple:
{% if 'RelationField' in field.__class__.__name__ %}
<div class="col-md-1">
Manage object
</div>
{% endif %}