繁体   English   中英

在 flask Z45E959010CBEC742B865B68A40FDB3 中如何使用 python function?

[英]How use python function in flask jinja2 template?

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

jinja2.exceptions.UndefinedError:“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 %}

我可以在 jinja 2 模板中使用split(",") function 和想要使用 python 的isinstance()str()模板。

jinja 模板中的语言实际上不是 python,它是 python 看起来像,这意味着 python 内置插件不存在。 为了使 python 内置在每个模板中,在启动时,在构建jinja2.Environment时将任何必需的内置添加到globals参数。 如下所示:

app.jinja_env.globals.update(isinstance=isinstance)

或者

import jinja2
env = jinja2.Environment()
env.globals.update(isinstance:isinstance)

另一种选择是使用Flask 上下文处理器 例如,来自 Flask 文档,这是一个上下文处理器,它使format_price function 在应用程序的所有模板中可用:

app = Flask(__name__)

@app.context_processor
def utility_processor():
    def format_price(amount, currency="€"):
        return f"{amount:.2f}{currency}"
    return dict(format_price=format_price)

这个想法是你用@app.context_processor装饰一个function,然后它返回的字典自动合并到所有模板的Jinja上下文中。

请注意,这甚至可以用于将整个模块添加到模板上下文中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM