Я играю с сокращателем URL (на основе демонстрационного приложения Shortly от Werkzeug).
У меня есть такой диктант -
('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 %}
Дело в том, что я не могу получить доступ к элементам в dict.
Линия
<li>{{ item }}</li>
это то, на чем я сосредоточил внимание. Как и выше, я получаю список ключей в dict.
<li>{{ item["target"] }}</li>
ничего не возвращает. Кажется, что ни один из элементов типа {{ user.url }}›{{ user.username }} в документах не работает.
Идеи пожалуйста? Новичок - будь нежным. Спасибо.
Обновить
Спасибо за ответы.
Ответ Эвана работает, но использует список диктовок. Я хочу передать dict и отобразить его (потому что мне нужен нецелочисленный индекс элементов). Джинджа так делает?
Кроме того, я неверно представил 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>
распечатывает все. Большое спасибо.