我正在使用 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 %}
问题是,我似乎无法访问字典中的项目。
线
<li>{{ item }}</li>
是我关注的地方。如上所述,我得到了字典中的键列表。
<li>{{ item["target"] }}</li>
什么都不返回。文档中的 {{ user.url }}">{{ user.username }} 类型的东西似乎都不起作用。
请问有什么想法吗?新手——温柔点。谢谢。
更新
感谢您的回复。
伊万的答案有效,但使用了一个字典列表。我想传递一个字典并渲染它(因为我想要一个非整数索引项)。金佳会这样做吗?
另外 - 我错误地表示了 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'}}
进一步的实验 - 传递一个 dict 会产生一个关于列表对象的错误。
{% for key in url_list.iteritems() %}
UndefinedError:“列表对象”没有属性“iteritems”
再次感谢。
仍然对为什么它认为我正在通过一个列表但现在让它工作感到困惑。
{% for key, value in url_list.iteritems() %}
<li>{{ key }} - {{ value["target"] }} - {{ value["clicks"] }}</li>
打印出一切。非常感谢。