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 }} タイプのものはどれも機能していないようです。
アイデアをお願いします。初心者 - 優しくしてください。ありがとう。
アップデート
回答ありがとうございます。
Ewanの答えは機能しますが、辞書のリストを使用します。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: 'list object' には属性 'iteritems' がありません
再度、感謝します。
なぜ私がリストを渡していたと思ったのに、今はうまくいっているのか、まだ困惑しています。
{% for key, value in url_list.iteritems() %}
<li>{{ key }} - {{ value["target"] }} - {{ value["clicks"] }}</li>
すべてを出力します。どうもありがとう。