(编辑)的 我来自web2py背景,发现Django是一个比web2py更复杂的学习和使用框架。
在第一个答案之后,我已经调整了我的问题描述。
在我看来,我有:
def team(request):
hr = dict(name="Some Name", photo="/static/images/HR.jpg", url="http://some.website.com/?page_id=3602")
js = dict(name="Some Name2", photo="/static/images/JS.jpg", url="http://some.website.com/?page_id=3608")
context = {team:[hr,js]}
return render(request, "wos_2017_2/team.html", context)
在模板中我有
<ul>
{% for person in context.team %}
<li> {{ person.name }} {{ person.photo }} {{ person.url }} </li>
{% endfor %}
</ul>
绝对没有输出。
这适用于普通的python:
hr = dict(name="Some Name", photo="/static/images/HR.jpg", url="http://some.website.com/?page_id=3602")
js = dict(name="Some Name2", photo="/static/images/JS.jpg", url="http://some.website.com/?page_id=3608")
context = dict(team = [hr,js])
for i in context['team']:
print(i['name'], i['photo'], i['url'])
带输出
Some Name /static/images/HR.jpg http://some.website.com/?page_id=3602
Some Name2 /static/images/JS.jpg http://some.website.com/?page_id=3608
为什么我没有在Django中获得任何结果?
答案 0 :(得分:3)
你的第一个例子是正确的。可悲的是,你的第一行代码中有一个小错字:
hr = dict(name="Some Name, ...),
该行以逗号,
结尾。现在hr
变为tuple
,只有一个元素:dict。如果没有逗号,则可以使用:
{{ team.0.name }}
{{ team.1.name }}
根据您更新的答案,您需要在模板中将context.team
更改为team
:
{% for person in team %}
上下文字典已解包&#39;在模板中。
答案 1 :(得分:0)
我无法发表评论所以我不得不发表回答。
只能使用不可变数据类型作为键,即不能使用列表或词典如果使用可变数据类型作为键,则会收到错误消息。键可以正常使用。
我能说的是问题出在您的视图代码中:
此
context = {team:[hr,js]}
应该是这样的:
context = {"team":[hr,js]}
或
context = dict(team=[hr,js])
答案 2 :(得分:0)
<ul>
{% for person in team %}
<li> {{ person.name }} {{ person.photo }} {{ person.url }} </li>
{% endfor %}
</ul>
是阅读模板中字典的正确方法。