[英]Returning Data from Python Function for use with Jinja2 Template (Flask)
[英]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.