我正在使用 url 缩短器(基于 Werkzeug 的 Shortly 演示应用程序)。
我有一个这样的字典 -
('1', {'target': 'http://10.58.48.103:5000/', 'clicks': '1'})
('3', {'target': 'http://slash.org', 'clicks': '4'})
('2', {'target': 'http://10.58.48.58:5000/', 'clicks': '1'})
('5', {'target': 'http://de.com/a', 'clicks': '0'})
它在 url_list 中返回并由 render_template 使用
def on_list_urls(self, request):
url_list = self.get_urls()
return self.render_template('list_urls.html',
url_list = url_list
)
模板 list_urls 非常简单 -
{% extends "layout.html" %}
{% block title %}List URLs{% endblock %}
{% block body %}
<h2>List URLs</h2>
<ul id="items">
{% for item in url_list %}
<li>{{ item }}</li>
{% endfor %}
</ul>
{% endblock %}
问题是,我似乎无法访问字典中的项目。
The line
<li>{{ item }}</li>
这是我关注的地方。如上所述,我得到了字典中键的列表。
<li>{{ item["target"] }}</li>
什么也不返回。没有任何一个
{{ user.url }}">{{ user.用户名 }}
在文档中输入内容似乎有效。
请问有什么想法吗?新手——要温柔。谢谢。
Update
感谢您的回复。
伊万的答案有效,但使用了一个字典列表。我想传递一个字典并渲染它(因为我想要一个非整数的项目索引)。金贾这样做吗?
另外 - 我错误地表示了 url_list。它更像是这样的——
{'a': {'target': 'http://testing.com/test', 'clicks': '0'},
'1': {'target': 'http://10.58.48.103:5000/', 'clicks': '1'},
'3': {'target': 'http://slash.org', 'clicks': '4'},
'2': {'target': 'http://10.58.48.58:5000/', 'clicks': '1'}}
进一步的实验 - 传递字典会产生有关列表对象的错误。
{% for key in url_list.iteritems() %}
UndefinedError:“列表对象”没有属性“iteritems”
再次感谢。
仍然困惑为什么它认为我正在传递一个列表但现在它开始工作了。
{% for key, value in url_list.iteritems() %}
<li>{{ key }} - {{ value["target"] }} - {{ value["clicks"] }}</li>
打印出所有内容。非常感谢。