Доброго времени суток. Вот подскажите мне, если можете, как работают запросы к БД из шаблонов. Зашёл в тупик. Есть такой тестовый код:
def test(request):
customer_list = Customer.objects.all()
customer_list2 = Customer.objects.all()
context = {'customer_list': customer_list, 'customer_list2': customer_list2}
return render(request, 'bootstrap/test.html', context)
Если в шаблоне не использовать переменные из контекста, джанго не делает запросов к БД. Во всяком случае, если верить django-debug-toolbar.
Если использовать
{{ customer_list }}
делает один запрос.
Если написать
{{ customer_list }}
{{ customer_list }}
делает два запроса. Логичный вывод: вьюз делает запросы тогда, когда шаблон просит у него значение переменной. Странно, но по-своему логично.
Но тогда почему, если вставить в шаблон такое:
{% for customer in customer_list %}
{% endfor %}
Будет один запрос. А если такое:
{% for customer in customer_list %}
{% endfor %}
{{ customer_list }}
{{ customer_list }}
получается всего один запрос о_О?