QuerySet : класс Django, который обрабатывает ответы SQL и возвращает конструкцию python, представляющую результаты.Хотя он функционирует как список во многих отношениях, на самом деле он называется «повторяемым».Он просто имитирует поведение списка, чтобы позволить вам использовать такие вещи, как циклы for.
Tuple : неизменный список.Это означает, что как только он установлен, его нельзя изменить.Практически любым другим способом он ведет себя как список.
Словарь : также известен как хэш в других языках.Это можно считать «списком ключей».«Список» в самом строгом смысле - это группа элементов, хранящихся последовательно в памяти.В старые времена программирования вам приходилось «выталкивать» элементы и «выталкивать» элементы в список, и их можно было получить только в формате FIFO или по принципу «первым пришел - первым вышел».Словари предоставляют способ «поиска» элементов в списке.Он состоит из пар ключ-значение, поэтому вы можете ссылаться на ключ и получать прикрепленное значение.
Теперь в терминах шаблонов Django:
QuerySets : вы выполняете итерациюнад этим, используя стандартные методы.Как только вы получите результат из чего-то вроде MyModel.objects.all()
, вы можете использовать тег {% for value in queryset %}
.
Tuples : в отношении итерации они ведут себя точно как стандартные списки.Вы также можете просто использовать тег {% for value in tuple %}
.Единственное потенциальное зависание в том, что иногда вы в конечном итоге получаете кортежи или список кортежей.Это как многоуровневые списки.Вы должны выполнить итерацию по внешнему списку или кортежу, а затем выполнить итерации по внутренним.
Словари : Это, вероятно, самые сложные, только потому, что они требуют вызова метода для получения итерируемогоobject.
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 %}