在flask中,html文件存储在/templates
目录内。我对这个微框架和python3还是陌生的。在我的主要python代码中,我有一个功能,例如
""" this is the function that I need to use wihtin the html template below"""
def get_status(statusNum):
if statusNum == 1:
return 'active'
if statusNum == 0:
return 'inactive'
"""this is the function that renders the html"""
@app.route('/')
def index():
render_template('index.html')
然后在index.html中,我有这个简单的代码,例如
<html>
<head><title>My Page</title></head>
<body>
<ul>
{% for listing in listings %}
<li>{{listing.status_num}}</li>
{% endfor %}
</ul>
</body>
</html>
这个listing.status_num
值是1或0,为了让我显示“ active”或“ inactive”之类的文本,我想在html模板中使用像这样的python函数,如get_status(listing.status_num)。那有可能吗?如何在Flask HTML模板内正确使用python函数?
是的,有多种方法可以解决此问题。
用例的第一个也是最简单的就是使用提供的Jinja2选项在模板本身中进行检查。
<html>
<head><title>My Page</title></head>
<body>
<ul>
{% for listing in listings %}
<li>
{% if listing.status_num == 1 %}
active
{% elif listing.status_num == 0 %}
inactive
{% endif %}
</li>
{% endfor %}
</ul>
</body>
</html>
另一个选择是将上下文处理器添加到您的应用程序。上下文处理器自动将新变量注入模板的上下文中,并在呈现模板之前运行。
@app.context_processor
def utility_processor():
def get_status(statusNum):
if statusNum == 1:
return 'active'
if statusNum == 0:
return 'inactive'
return dict(get_status=get_status)
然后可以在模板中使用它,如下所示:
<html>
<head><title>My Page</title></head>
<body>
<ul>
{% for listing in listings %}
<li>
{{ get_status(listing.status_num) }}
</li>
{% endfor %}
</ul>
</body>
</html>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句