Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Flask/Jinja2将Python dict转换成HTML模板_Python_Html_Dictionary_Flask_Jinja2 - Fatal编程技术网

如何使用Flask/Jinja2将Python dict转换成HTML模板

如何使用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">

我试图在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">
            <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:


非常感谢您的回答。这正是问题所在!