如何避免在django 1.3中缓存基本模板

时间:2011-05-04 08:38:39

标签: django

我最近一直在更新到django 1.3并得到以下问题:

我有一个基本模板'base.html',它取决于用户会话的状态(保存在request.session中),因此每次加载/重新加载页面时都应该呈现。根据常用用途,我的所有页面都从此基本模板扩展而来:

{% extends "base.html" %}

之前这不是一个问题,但现在我注意到基本模板以某种方式被缓存(即它没有在每个请求上重新加载)。我正在使用以下模板加载器:

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

有人可以建议我如何禁用此缓存???如果您需要更多信息,请告诉我 - 提前感谢。

编辑: 页面在views.py中呈现如下:

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

2 个答案:

答案 0 :(得分:0)

这可能为时已晚,但我最近遇到了同样的问题,我找到了另一种(可能更简单的)解决方案:

在Django的缓存框架中,您可以使用名为@cache_control的装饰器来处理您要发送的标头,例如:

from django.views.decorators.cache import cache_control
@cache_control(must_revalidate=True)
def my_view(request):
...
每次访问视图时,

都会告诉缓存重新验证。

答案 1 :(得分:0)

实际问题是客户端缓存。使用以下中间件解决了整个问题:

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