Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在flask jinja2模板中使用python函数?_Python_Html_User Interface_Flask_Jinja2 - Fatal编程技术网

如何在flask jinja2模板中使用python函数?

如何在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>

我使用flask jinja2模板将一个列表列表发送到我的HTML页面。我想检查:-列表中的项目是否为str类型?。但是有一个例外

jinja2.exceptions.UndeinederRor:“isinstance”未定义

代码如下:-

{% 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必须是类型或类型的元组请参见