4

所以,我正在研究 Django Book 和 django 文档,但我无法理解这个例子:

<ul>
{% for athlete in athlete_list %}
    <li>{{ athlete.name }}</li>
{% endfor %}
</ul>

这是关于模板的,我不知道如何编写上下文。如何从列表中获取名为“名称”的属性?如果我创建字典,则无法像本例中那样使用 for 循环。我已经这样编码了,但它不起作用:

athlete_list = {'name' = ['Athlete1', 'Athlete2', 'Athlete3']}
Context({'athlete_list':athlete_list})

如果我将 player_list 变量更改为普通列表(不是字典),模板中的“athlete.name”也将不起作用。我不认为这是一本书的错误,它可能很容易解决,但我无法理解。

4

3 回答 3

5

我怀疑这athlete_list是一个包含Athlete模型的 QuerySet 对象......(在任何地方都提到过吗?)。然后模型将有一个.name.age.sport或任何...

更新- 只是看了http://www.djangobook.com/en/2.0/chapter04.html - 这实际上似乎不是最好的例子......

要保持模板不变,您可以返回字典列表的上下文,例如:

[ {'name': 'bob'}, {'name': 'jim'}, {'name': 'joe'} ]
于 2012-11-22T00:30:14.803 回答
3

如果你想保留模板,你应该在下面返回。

athlete_list = ({'name':'Athlete1'},{'name':'Athlete2'},{'name':'Athlete3'})

Context({'athlete_list':athlete_list})
于 2012-11-22T03:04:15.593 回答
2

你的 player_list 实际上是一个字典

<ul>
{% for athlete_name in athlete_list.name %}
    <li>{{ athlete_name }}</li>
{% endfor %}
</ul>

在模板中,您可以通过.而不是通过访问字典键[]

所以在你的模板中{{ athleate_list.name }}

将是一个字符串列表# ['Athlete1', 'Athlete2', 'Athlete3']

于 2012-11-22T00:28:13.453 回答