我创建的模板文件包含:
{% if type({'a':1,'b':2}) is dict %}
print "Oh Yes!!"
{% else %}
print "Oh No!!!"
{% endif %}
然后Jinja2回应说:
TemplateAssertionError: no test named 'dict'
我对Jinja2和Flask来说是全新的
答案 0 :(得分:35)
您正在寻找mapping
test:
{% if {'a': 1, 'b': 2} is mapping %}
"Oh Yes!"
{% else %}
"Oh No!"
{% endif %}
Jinja不是Python,因此您无权访问所有内置文件(type
和print
,例如,除非您将它们添加到the context。在Flask中,您可以使用context_processor
decorator)执行此操作。
根本不需要print
。默认情况下输出所有内容(除非您在extends
父项的子模板中,在这种情况下您可以执行interesting things like the NULL Master fallback,因为只输出主模板中可用名称的块。
答案 1 :(得分:5)
怎么样:
{% if {'a':1,'b':2} is mapping %}
print "Oh Yes!!"
{% else %}
print "Oh No!!!"
{% endif %}
请参阅List of Builtin Tests以供参考。
答案 2 :(得分:5)
如果您想获得自定义类型,可以访问字段名称,如下例所示:
{% if 'RelationField' in field.__class__.__name__ %}
<div class="col-md-1">
Manage object
</div>
{% endif %}