Кэширование частей шаблона django
У меня есть страница, я хочу кэшировать только часть шаблона, потому что если я кэширую всю страницу, у меня кэшируется и заголовок сайта, а мне это не нужно. Я попытался использовать тег - cache в шаблоне, но, к сожалению, запросы все равно продолжают обращаться к базе данных. Тем не менее, доступ к кэшу осуществляется. В чем может быть проблема?
lesson.html
views.py
class LessonDetailView(DetailView):
model = Lesson
template_name = 'courses/lesson.html'
context_object_name = 'lesson'
slug_url_kwarg = 'lesson_slug'
def get_queryset(self):
queryset = Lesson.objects.filter(slug=self.kwargs['lesson_slug']).prefetch_related('materials', 'questions')
return queryset
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = self.object.name
context['selected_course'] = Course.objects.prefetch_related('themes__lessons').get(slug=self.kwargs['course_slug'])
return context
Используйте тег шаблона - cache.
Вам необходимо убедиться, что вы правильно обернули определенные секции вашего шаблона тегом {% cache %}.
И нужно проверить:
Тег {% cache %}
требует уникального ключа кэширования для раздела. В приведенном выше примере я использовал selected_course_themes
selected_course.id
в качестве уникального ключа для кэширования тем для конкретного курса. Вы можете настроить ключ в зависимости от того, какие данные отображаются и когда они меняются.
и Число 500 в теге {% cache 500 %} - это продолжительность кэширования в секундах (корректируйте по мере необходимости).