【问题标题】:python/django for loop and list attributespython/django for 循环和列表属性
【发布时间】:2012-11-22 00:26:41
【问题描述】:

所以,我正在研究 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”也将不起作用。我不认为这是书上的错误,而且可能很容易解决,但我无法理解。

【问题讨论】:

    标签: python django list for-loop


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢您的回答,它现在当然可以工作了。他们没有在任何地方提到如何编码上下文,现在我可以看到这真的不是最好的例子:)
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      你的运动员列表实际上是一个字典

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

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

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

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

      【讨论】:

      • 这当然也可以,但我想使用书中的模板。还是谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 2019-02-24
      • 2015-11-08
      • 2016-09-04
      • 2015-04-18
      • 1970-01-01
      相关资源
      最近更新 更多