gpt4 book ai didi

python - 在 python - flask - jinja2 模板中迭代多个列表

转载 作者:太空狗 更新时间:2023-10-29 21:14:28 25 4
gpt4 key购买 nike

我在对 Flask jinja2 模板中的多个列表进行迭代 for 循环 时遇到了问题。

我的代码如下所示

Type = 'RS'
IDs = ['1001','1002']
msgs = ['Success','Success']
rcs = ['0','1']
return render_template('form_result.html',type=type,IDs=IDs,msgs=msgs,rcs=rcs)

到目前为止,我不确定是否能提出正确的模板,

<html>
<head>
<title>Response</title>

</head>
<body>
<h1>Type - {{Type}}!</h1>
{% for reqID,msg,rc in reqIDs,msgs,rcs %}
<h1>ID - {{ID}}</h1>
{% if rc %}
<h1>Status - {{msg}}!</h1>
{% else %}
<h1> Failed </h1>
{% endif %}
{% endfor %}
</body>
</html>

我想要得到的输出是类似于下面的 html 页面

Type - RS
ID - 1001
Status - Failed

ID - 1002
Status - Success

最佳答案

你需要 zip() 但它没有在 jinja2 模板中定义。

一个解决方案是在 render_template 函数被调用之前对其进行压缩,例如:

查看函数:

return render_template('form_result.html',type=type,reqIDs_msgs_rcs=zip(IDs,msgs,rcs))

模板:

{% for reqID,msg,rc in reqIDs_msgs_rcs %}
<h1>ID - {{ID}}</h1>
{% if rc %}
<h1>Status - {{msg}}!</h1>
{% else %}
<h1> Failed </h1>
{% endif %}
{% endfor %}

此外,您可以使用Flask.add_template_xzip 添加到全局jinja2 模板中。函数(或 Flask.template_x 装饰器)

@app.template_global(name='zip')
def _zip(*args, **kwargs): #to not overwrite builtin zip in globals
return __builtins__.zip(*args, **kwargs)

关于python - 在 python - flask - jinja2 模板中迭代多个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21306134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com