Проверить тип переменной внутри Jinja2 в колбе
Созданный файл шаблона содержит следующее:
{% if type({'a':1,'b':2}) is dict %}
print "Oh Yes!!"
{% else %}
print "Oh No!!!"
{% endif %}
Затем Jinja2 отвечает, говоря:
TemplateAssertionError: no test named 'dict'
Я совершенно не знаком с Jinja2 и Flask
Ответы
Ответ 1
Вы ищете mapping
test:
{% if {'a': 1, 'b': 2} is mapping %}
"Oh Yes!"
{% else %}
"Oh No!"
{% endif %}
Jinja - это не Python, так что у вас нет доступа ко всем встроенным (type
и print
не существует, например, если вы не добавите их в контекст. В Flask вы делаете это с помощью context_processor
decorator).
На самом деле вам не нужно print
. По умолчанию все выводится (если вы не находитесь в дочернем шаблоне, который extends
является родителем, и в этом случае вы можете сделать интересные вещи, такие как резервное копирование NULL Master, поскольку только блоки с именами, доступными в главном шаблоне).
Ответ 2
Как насчет:
{% if {'a':1,'b':2} is mapping %}
print "Oh Yes!!"
{% else %}
print "Oh No!!!"
{% endif %}
см. Список встроенных тестов для справки.
Ответ 3
Если вы хотите получить собственный тип, вы можете получить имя поля, как в этом примере:
{% if 'RelationField' in field.__class__.__name__ %}
<div class="col-md-1">
Manage object
</div>
{% endif %}