Пытаюсь закешировать вывод отдельной новости.
news/views.py
def news_view(request, news_id):
news = News.objects.get(pk=news_id)
return render_to_response(
'news/news_view.html',
{
'news_id': news_id,
'news': news,
},
context_instance=RequestContext(request)
)
news/templates/news_view.html
{% extends "base.html" %}
{% load cache %}
{% block content %}
{% cache 3600 news_view request.META.HTTP_HOST news_id %}
Здесь будет новость с id {{ news_id }}
{% endcache %}
{% endblock %}
Для чистоты эксперимента убрал из шаблона обращение к полям новости.
Итог: фрагмент страницы, как и было необходимо, закешировался. А вот запрос в базу за новостью по-прежнему выполняется.
Аналогичным образом выводится список новостей, только через objects.filter - лишних запросов не происходит.
На сколько я понял Django до последнего тянет с выполнением запросов. Строкой news = News.objects.get(pk=1) я описываю то, что хочу получить, а запрос в базу должен выполниться при print news.title, например. Или это справедливо лишь для списков?