简单的问题,可能不需要很多代码:
如何使用 jinja2 显示由两个列表组成的字典(如下所示),将第二个列表中的项目与第一个列表中的项目穿插在一起?
字典的关键词是“标题”和“结果”。
字典看起来像这样:
{ 'titles': [('title-1',), ('title-2',), ('title-3',)],
'results': [
(1, 'author-1', publisher-1', genre-1),
(2, 'author-2', publisher-2', genre-2),
(3, 'author-3', publisher-3', genre-3)
]
}
期望的输出如下:
title-1
author-1, publisher-1, genre-1
title-2
author-2, publisher-2, genre-2
title-3
author-3, publisher-3, genre-3
这是flask-sqlite3 输出,我也不理解“标题”中的尾随逗号,我认为这是一个不相关的问题。
预先感谢您的指导。
我已经使用 jijna2 模板在圆圈中循环(没有双关语)几个小时,尝试了许多不同的排列,但没有成功,使用了 Stackoverflow 上其他答案的建议。
使用上面 Patrick Yoder 给出的评论:
在app.py中:
app.jinja_env.filters['zip'] = zip
app.py 中创建 2 个列表(标题和结果)的 SQL 执行:
con = sqlite3.connect(DATABASE)
cur = con.cursor()
SQL 语句,然后...
query1 = cur.execute(sql_1)
titles = cur.fetchall()
query2 = cur.execute(sql_2)
results = cur.fetchall()
创建字典,命名为“data”
data = { "titles": titles , "results": results }
return render_template("/custom-search.html", data=data)
tldr;这是解决方案...
在custom-search.html页面上(仅限相关项目)
{% if data %}
{% set count = namespace(value=0) %}
{% for titles, results in data['titles']|zip(data['results']) %}
在两个列表项标签中...
{{ data.titles[count.value] }}
{{ data.results[count.value] }}
{% set count.value = count.value + 1 %}
{% endfor %}
{% endif %}
我希望我能弄清楚如何删除每行输出中的左括号和右括号,但这是一个单独的问题