如何使用Flask/Jinja2将Python dict转换成HTML模板
我试图在HTML文件中使用Python dict。字典通过Flask中的如何使用Flask/Jinja2将Python dict转换成HTML模板,python,html,dictionary,flask,jinja2,Python,Html,Dictionary,Flask,Jinja2,我试图在HTML文件中使用Python dict。字典通过Flask中的render\u template函数传递给HTML模板 这是dict的格式: dict1[counter] = { 'title': l.getTitle(), 'url': l.getLink(), 'img': l.getImg() } 然后,在我要迭代的HTML模板中: {% for l in result.iteritems() %} <div class="link">
render\u template
函数传递给HTML模板
这是dict的格式:
dict1[counter] = {
'title': l.getTitle(),
'url': l.getLink(),
'img': l.getImg()
}
然后,在我要迭代的HTML模板中:
{% for l in result.iteritems() %}
<div class="link">
<a href="{{ l.url }}"> {{l.title}}</a>
<img src="{{ l.img }}" width="100" height="100">
</div>
{% endfor %}
{result.iteritems()中l的%
{%endfor%}
我不知道问题是什么,因为Flask中没有错误日志。问题是您正在迭代
iteritems()
,它是(键、值)对的迭代器。这意味着l
变量是元组,而不是字典。实际上,您希望迭代itervalues()
。按如下方式更新模板代码:
{% for key in result.iterkeys()|sort %}
<div class="link">
{%- set val=result[key] %}
<a href="{{ val.url }}"> {{val.title}}</a>
<img src="{{ val.img }}" width="100" height="100">
</div>
{% endfor %}
{result.itervalues()%}
{%endfor%}
我相信这会让你有你想要的行为
请注意,这将以随机顺序返回值(因为迭代字典是随机的)。如果要按键排序,可以按如下方式修改模板:
{% for key in result.iterkeys()|sort %}
<div class="link">
{%- set val=result[key] %}
<a href="{{ val.url }}"> {{val.title}}</a>
<img src="{{ val.img }}" width="100" height="100">
</div>
{% endfor %}
以下是它返回的HTML:
非常感谢您的回答。这正是问题所在!