一尘不染

检查Flask中Jinja2内部的变量类型

flask

我创建的模板文件包含以下内容:

{% if type({'a':1,'b':2}) is dict %}
    print "Oh Yes!!"
{% else %}
    print "Oh No!!!"
{% endif %}

然后Jinja2回应说:

TemplateAssertionError: no test named 'dict'

我对Jinja2和Flask完全陌生


阅读 1243

收藏
2020-04-07

共1个答案

一尘不染

你正在寻找mapping测试:

{% if {'a': 1, 'b': 2} is mapping %}
    "Oh Yes!"
{% else %}
    "Oh No!"
{% endif %}

Jinja 是不是Python的,因此你不必访问所有内建(typeprint不存在,例如,除非你将它们添加到背景下,在瓶,你这样做与context_processor装饰)。

你实际上根本不需要print。默认情况下,所有内容都会输出(除非你extends位于父模板的子模板中,在这种情况下,你可以做一些有趣的事情,例如NULL Master回退,因为仅输出具有主模板中可用名称的块)。

2020-04-07