Как избежать кеширования базового шаблона в django 1.3 - PullRequest
0 голосов
/ 04 мая 2011

Я недавно обновился до django 1.3 и получил следующую проблему:

У меня есть базовый шаблон 'base.html', который зависит от состояния (сохраняется в request.session) пользовательского сеанса и, следовательно, должен отображаться при каждой загрузке / перезагрузке страницы. Все мои страницы расширены из этого базового шаблона в соответствии с общим использованием:

{% extends "base.html" %}

Раньше это не было проблемой, но теперь я заметил, что базовый шаблон как-то кэшируется (то есть он не перезагружается при каждом запросе). Я использую следующие загрузчики шаблонов:

TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)

Может кто-нибудь подсказать, пожалуйста, как отключить это кеширование ??? Дайте мне знать, если вам нужна дополнительная информация - заранее спасибо.

EDIT: Страницы отображаются в пределах views.py следующим образом:

render_to_response('page.html', RequestContext(request,{}))

Ответы [ 2 ]

0 голосов
/ 11 октября 2011

Фактической проблемой было кэширование на стороне клиента. Проблема решается для всего сайта с помощью промежуточного программного обеспечения:

from django.utils.cache import add_never_cache_headers

class DisableClientSideCachingMiddleware(object):
    def process_response(self, request, response):
        add_never_cache_headers(response)
        return response
0 голосов
/ 01 августа 2011

Это может быть слишком поздно, но я недавно столкнулся с той же проблемой, и нашел другое (возможно, более простое) решение:

В инфраструктуре кэша Django вы можете использовать декоратор @cache_control, чтобы позаботиться озаголовок, который вы отправляете, например:

from django.views.decorators.cache import cache_control
@cache_control(must_revalidate=True)
def my_view(request):
...

сообщит кэшам о необходимости повторной проверки при каждом доступе к представлению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...