2012-11-22 53 views
4

所以,我學習Django的書,和Django文檔,我無法理解這樣的例子:蟒蛇/ Django的for循環和屬性列表

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

這是關於模板,我不如何編碼上下文。我如何從列表中獲取名爲「name」的屬性?如果我創建一個字典,將不可能像本例中那樣使用for循環。我已經編寫它像這樣,但它不工作:

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

如果我athlete_list變量更改爲正常的列表(沒有字典)在模板中的「athlete.name」不會太工作。我不認爲這是一本書中的錯誤,它可能很容易解決,但我無法得到它。

回答

5

我懷疑athlete_list是一個包含Athlete模型的QuerySet對象...(是否在任何地方提及?)。然後車型將有.name.age.sport或任何...

更新 - 只是看着http://www.djangobook.com/en/2.0/chapter04.html - 這其實並不似乎是最好的例子....

爲了保持在現有模板中,你可以返回一個上下文類型的字典列表,例如:

[ {'name': 'bob'}, {'name': 'jim'}, {'name': 'joe'} ] 
+0

謝謝你的回答,當然它現在正在工作。他們在任何地方都沒有提到如何編碼上下文,現在我可以看到它並不是最好的例子:) – Chris

2

你athlete_list實際上是模板的字典

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

您可以通過.,而不是通過[]

所以在你的模板訪問字典鍵{{ athleate_list.name }}

將字符串# ['Athlete1', 'Athlete2', 'Athlete3']列表

+0

這當然也在起作用,但我想要像在書中一樣使用模板。無論如何感謝 – Chris

3

如果你想保留的模板,你應該低於返回。

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

Context({'athlete_list':athlete_list})