如何在flask jinja2模板中使用python函数?
我使用flask jinja2模板将一个列表列表发送到我的HTML页面。我想检查:-列表中的项目是否为str类型?。但是有一个例外 jinja2.exceptions.UndeinederRor:“isinstance”未定义 代码如下:-如何在flask jinja2模板中使用python函数?,python,html,user-interface,flask,jinja2,Python,Html,User Interface,Flask,Jinja2,我使用flask jinja2模板将一个列表列表发送到我的HTML页面。我想检查:-列表中的项目是否为str类型?。但是有一个例外 jinja2.exceptions.UndeinederRor:“isinstance”未定义 代码如下:- {% for i in req%} <tr> <th scope="row">{{loop.index}}</th> <td>{{i[1]}}</td>
{% for i in req%}
<tr>
<th scope="row">{{loop.index}}</th>
<td>{{i[1]}}</td>
<td>{{i[24]}}</td>
<td>{{i[49]}}</td>
<td>{{i[53]}}</td>
{% if isinstance(i[86], str) %}
{% for j in i[86].split(",") %}
<ol>
<li>{{i[86]}}</li>
</ol>
{% endfor %}
{% else %}
<td>{{i[86]}}</td>
{% endif %}
</tr>
{% endfor %}
{req%中的i的%
{{loop.index}
{{i[1]}
{{i[24]}
{{i[49]}
{{i[53]}
{%if-isinstance(i[86],str)%}
{i[86]中j的百分比。拆分(“,”%}
{{i[86]}
{%endfor%}
{%else%}
{{i[86]}
{%endif%}
{%endfor%}
我可以使用
split(“,”)
函数,并希望在jinja 2模板中使用python的isinstance()
或str()
of python jinja模板中的语言实际上不是python,看起来像python,这意味着不存在python内置。要使python内置在每个模板中,在启动时,在构建jinja2.Environment
时,将所有必需的内置添加到globals
参数中。如下所示:
app.jinja_env.globals.update(isinstance=isinstance)
或
importjinja2
env=jinja2.Environment()
环境全局更新(isinstance:isinstance)
尽管它看起来像Python,但实际上它是Jinja2语法,您只能使用内置或。您需要添加那些列表中没有的内容。要添加@deceze的注释,您还可以使用Flask注册您自己的自定义Jinja2模板过滤器:“app.jinja_env.globals.update(isinstance=isinstance)”为我工作。我可以在那里注册更多的方法吗,比如“app.jinja_env.globals.update(isinstance=isinstance,sorted=sorted)”。下一个解决方案出现语法错误“env.globals.update(isinstance:isinstance)”。如果我错了,请更正我,方法是排序
您的意思是排序
?这是打字错误吗?您可能会遇到需要导入类型以避免TypeError的后续问题:isinstance()arg 2必须是类型或类型的元组请参见