3
我不能讓.items在我的Django模板的工作:.items不工作defaultdict在Django模板
副本,並從我的CBV的get_context_data粘貼:
context['data'] = assertion_dict
context['dataitems'] = assertion_dict.items()
return context
複製和粘貼從我的模板:
<h3>data dump</h3>
{{data}}
<h3>dataitems</h3>
{% for key, value in dataitems %}
{{ key }}: {{ value }} <br/>
{% endfor %}
<h3>data.items</h3>
{% for key, value in data.items %}
{{ key }}: {{ value }} <br/>
{% endfor %}
<h3>Not found test</h3>
{{ i_dont_exist }}
輸出:
**data dump**
defaultdict(<class 'list'>, {<BadgeType: Talent>: [<BadgeAssertion: Blender Blue Belt>], <BadgeType: Achievement>: [<BadgeAssertion: MyBadge#1>, <BadgeAssertion: MyBadge#1>, <BadgeAssertion: MyBadge#2>], <BadgeType: Award>: [<BadgeAssertion: Copy of Copy of Blenbade>]})
**dataitems**
Talent: [<BadgeAssertion: Blender Blue Belt>]
Achievement: [<BadgeAssertion: MyBadge#1>, <BadgeAssertion: MyBadge#1>, <BadgeAssertion: MyBadge#2>]
Award: [<BadgeAssertion: Copy of Copy of Blenbade>]
**data.items**
**Not found test**
DEBUG WARNING: undefined template variable [i_dont_exist] not found
爲什麼第二個版本不能工作,在我的模板中使用data.items?
你的第一個示例模板沒有什麼明顯的錯誤。檢查錯誤或意外重新分配'context ['data']'或刪除'assertion_dict'中的項目。 –
爲了排除拼寫錯誤和其他問題,我同時在上下文中發送了這兩個問題,並複製/粘貼了視圖,模板和生成的HTML輸出。問題用這個信息更新。 – 43Tesseracts
我會a)在模板的某個地方添加一個'{{data}}'的轉儲 - Python以合理的方式進行字符串化,並且這應該有助於驗證您的'data'變量是否包含您期望的 - 以及b)按照此處所述臨時設置您的「TEMPLATE_STRING_IF_INVALID」設置:http://stackoverflow.com/a/8990344/2337736 –