Django - 基于类的视图的URL缓存失败

问题描述:

我在Django Rest框架之上构建了一个RESTful API。该API的URL conf由基于类的视图组成。Django - 基于类的视图的URL缓存失败

我想缓存这些视图,但是,以下是失败。任何想法,为什么这可能是,我怎么可以改变它?

from django.views.decorators.cache import cache_page 

    urlpatterns = patterns('', 
    url(r'^dounces/?$', cache_page(60*60)(DounceListView.as_view(resource=DounceResource)), name='dounces_api'), 

我安装了以下中间件。

'django.middleware.gzip.GZipMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.transaction.TransactionMiddleware', 
'django.contrib.redirects.middleware.RedirectFallbackMiddleware', 

,并为当地的测试,我使用的是默认的缓存后端:

'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 
+0

失败怎么办?有错误,或只是不缓存页面? –

+0

不缓存。我添加了一个包含中间件的列表,以防我在那里丢失某些东西。 – Ben

+0

它如何失败?你在运行uwsgi进程吗?如果是这样,那么如果您的页面在每个请求上生成不同的内容,则每个进程都将拥有自己的缓存版本。 –

改变你的URLconf到

urlpatterns = patterns('', 
    url(r'^dounces/?$', cache_page(60*60)(DounceListView.as_view(resource=DounceResource)), name='dounces_api'), 
) 

也看到https://docs.djangoproject.com/en/1.7/topics/cache/#specifying-per-view-cache-in-the-urlconf

+1

这个答案已经过时。 [Django 1.6文档](https://docs.djangoproject.com/en/1.3/topics/cache/#specifying-per-view-cache-in-the-urlconf)显示装饰器应该用作'cache_page( 60 * 60)(MyView.as_view())'。 – Alasdair

对方回答是过时。正确的方法在这里详细描述:

https://docs.djangoproject.com/en/1.6/topics/cache/#specifying-per-view-cache-in-the-urlconf

它现在要做这样:

urlpatterns = patterns('', 
    url(r'^dounces/?$', cache_page(60*60)(DounceListView.as_view(resource=DounceResource)), name='dounces_api'), 
)