我创建的模板文件包含以下内容:
{% if type({'a':1,'b':2}) is dict %}
print "Oh Yes!!"
{% else %}
print "Oh No!!!"
{% endif %}
然后 Jinja2 回应说:
TemplateAssertionError: no test named 'dict'
我对 Jinja2 和 Flask 完全陌生
您正在寻找mapping
测试:
{% if {'a': 1, 'b': 2} is mapping %}
"Oh Yes!"
{% else %}
"Oh No!"
{% endif %}
但 Jinja 不是 Python,因此您无法访问所有内置函数(type
并且print
不存在,例如,除非您将它们添加到context。在 Flask 中,您使用context_processor
decorator执行此操作)。
你实际上根本不需要print
。默认情况下,所有内容都会输出(除非您在extends
父模板的子模板中,在这种情况下,您可以做一些有趣的事情,例如 NULL Master 回退,因为只输出主模板中具有可用名称的块)。
怎么样:
{% if {'a':1,'b':2} is mapping %}
print "Oh Yes!!"
{% else %}
print "Oh No!!!"
{% endif %}
请参阅内置测试列表以供参考。
如果您想获得自定义类型,您可以访问字段名称,如下例所示:
{% if 'RelationField' in field.__class__.__name__ %}
<div class="col-md-1">
Manage object
</div>
{% endif %}