QuerySet: 一个Django类,用于处理SQL响应并返回代表结果的Python结构。它在许多方面的行为类似于列表,但实际上它是一个“可迭代对象”。它仅模拟列表的行为,以便您可以像使用for循环等东西一样使用它。
Tuple: 一个不可变的列表。这意味着一旦它被设置,就无法更改。在几乎所有其他方面,它的行为都像一个列表。
Dictionary: 也称为哈希,在其他语言中也是如此。它可以被认为是“有键列表”。在严格意义上,“列表”是在内存中串行存储的项目组。在编程的早期,你必须从列表中“弹出”项目并“推入”项目,并且它们只能以FIFO或先进先出的方式检索。字典提供了一种查找列表中项目的方法。它由键-值对组成,因此您可以引用一个键并获取附加的值。
现在谈到Django模板:
QuerySets: 您可以使用标准方法迭代这些对象。一旦您从像MyModel.objects.all()
这样的地方获得结果,您可以使用{% for value in queryset %}
标签。
Tuples: 就迭代而言,这些对象的行为与标准列表完全相同。您还可以简单地使用{% for value in tuple %}
标签。唯一可能会遇到问题的是有时您会得到元组的元组或元组的列表。这些就像多级列表一样。您必须先迭代外部列表或元组,然后再迭代内部列表或元组。
Dictionaries: 这些是可能最复杂的,因为它们需要一个方法调用来获取可迭代对象。
mydict.iteritems() # returns an iterable consisting of `(key, value)` tuples.
mydict.iterkeys() # returns an iterable consisting of the keys. You can then use mydict[key] to get the values
mydict.itervalues() # returns an iterable consisting of the values.
在Django模板中,最后一种方法可能是简单迭代的最佳方式:
{% for value in mydict.itervalues %}