有没有办法在Jinja模板中调用Python函数?函数将只接受字符串years
,并将其转换为列表。
years = years.replace('[', '')
years = years.replace(']', '')
years = years.split(',')
我如何在下面的模板中的years
上调用它?
{% extends "base.html" %}
{% import "_macros.html" as macros %}
{% block title %}Year Results{% endblock %}
{% block page_content %}
<div class="page-header">
<h1>Year Search Results</h1>
</div>
<ul class=entries>
{% for entry in entries %}
<li><h3><a href="{{ url_for('main.grantinfo', applid=entry.appl_id) }}">{{ entry.appl_id }} : {{ entry.project_title }}</a></h3>
<br>
{% else %}
<li><em>No entry here</em>
{% endfor %}
</ul>
{% if pagination %}
<div class="pagination">
{{ macros.pagination_widget(pagination, '.yearresults', years=years) }}
</div>
{% endif %}
{% endblock %}
从模板中调用函数的一种方法是使用
@app.context_processor
decorator。在python文件中,比如main.py
在像footer.html这样的html文件中
输出
years
似乎是一个JSON列表,因此使用json.loads
来解析它,而不是手动剥离和拆分字符串。years
似乎是从视图发送到模板的变量,所以只需在视图中进行处理。如果您真的需要在模板中使用它(您可能不需要),可以将
json.loads
添加到Jinja globals中。然后像普通函数一样在模板中使用它。
可能如下:
在main.py文件中的第一个
然后在main.py中的某个地方包含以下内容(最好在函数之后执行),以便使函数可以全局访问
最后,您可以调用或使用模板中的函数
相关问题 更多 >
编程相关推荐