【发布时间】:2013-10-09 01:58:00
【问题描述】:
我正在使用网址缩短器(基于 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 }} 在文档中输入内容似乎有效。
请出主意?新手——温柔点。谢谢。
更新
感谢您的回复。
Ewan 的答案有效,但使用了一个字典列表。我想传递一个字典并渲染它(因为我想要一个非整数索引项)。 Jinja 会这样做吗?
另外 - 我错误地表示了 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: 'list object' 没有属性 'iteritems'
再次感谢。
仍然对为什么它认为我正在传递一个列表但现在可以正常工作感到困惑。
{% for key, value in url_list.iteritems() %}
<li>{{ key }} - {{ value["target"] }} - {{ value["clicks"] }}</li>
打印出所有内容。非常感谢。
【问题讨论】:
-
在我看来这不像是字典...这是一个以字典为第二个元素的元组列表。