Django - Сбой кэширования URL для представлений на основе классов - PullRequest
1 голос
/ 21 октября 2011

Я создал RESTful API поверх Django Rest Framework. URL-адрес conf для API состоит из представлений на основе классов.

Я хотел бы кэшировать эти представления, однако следующее не удается. Есть мысли о том, почему это может быть и как я могу это изменить?

   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',

Ответы [ 2 ]

4 голосов
/ 07 марта 2012

измените ваш 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

2 голосов
/ 23 января 2014

Другой ответ устарел.Правильный путь подробно описан здесь:

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'), 
)
...