我正在尝试在Flask中打印出条目列表,总条目和生成时间。在我的python代码中,我有:
def stream_template(template_name, **context):
app.update_template_context(context)
t = app.jinja_env.get_template(template_name)
rv = t.stream(context)
return rv
@app.route('/', methods=['POST'])
def get_data():
# Dong something here to prepare for data
total_entry = get_total_entry()
generated_time = get_generated_time()
entry_list = get_entry()
def blog_entries():
for entry in entry_list:
yield entry
return Response(stream_template('blog.html', data=blog_entries()))
我的blog_entry()为:(用于测试目的) 返回[for i in range(5)]
在blog.html中我有:(为了测试,让我们将每个条目视为一个int)
{% for i in data: %}
<br>Entry: {{ i }}</br>
{% endfor %}
结果,我会得到所有条目的列表。但是,我想在打印输入的同一页面之前和之后打印出total_entry和generated_time。我该如何更改我的python代码和html模板?
例如:我希望有类似的东西:
Total entry: 5
Generated time: 0.001
Entry: 1
Entry: 2
Entry: 3
Entry: 4
Entry: 5
非常感谢你!
答案 0 :(得分:1)
只需将变量作为**context
关键字参数传递。这应该有效,但我没有测试过。
以下是stream_template的文档。
@app.route('/', methods=['POST'])
def get_data():
# Dong something here to prepare for data
def blog_entries():
for entry in get_entry():
yield entry
return Response(stream_template('blog.html',
data=blog_entries(),
total_entries=get_total_entry(),
gen_time=get_generated_time()))
Jinja2模板。将格式更改为列表。您可以使用正确的名称访问Jinja2 -template中的**context
关键字参数。
<ul>
<li>Total entries: {{ total_entries }}</li>
<li>Generated time: {{ gen_time }}</li>
{% for i in data: %}
<li>Entry: {{ i }}</li>
{% endfor %}
</ul>