Django仍在使用@never\u缓存装饰器缓存视图

Django仍在使用@never\u缓存装饰器缓存视图,django,caching,django-rest-framework,memcached,Django,Caching,Django Rest Framework,Memcached,我将Django与Django Rest框架和uWSGI一起使用。我已经在带有pylibmc后端的服务器上设置了memcached。我已经为每个站点缓存配置了Django,所以每个视图都应该缓存,除了我使用@never\u缓存装饰器豁免的视图。我不明白为什么Django仍然试图缓存我的API视图,即使添加了Django的@never_cache decorator。我有一个支持草稿模型读写操作的API。当我使用UpdateAliView进行草稿更新,然后刷新页面时,它仍然显示更新之前的草稿数据。

我将Django与Django Rest框架和uWSGI一起使用。我已经在带有pylibmc后端的服务器上设置了memcached。我已经为每个站点缓存配置了Django,所以每个视图都应该缓存,除了我使用@never\u缓存装饰器豁免的视图。我不明白为什么Django仍然试图缓存我的API视图,即使添加了Django的@never_cache decorator。我有一个支持草稿模型读写操作的API。当我使用UpdateAliView进行草稿更新,然后刷新页面时,它仍然显示更新之前的草稿数据。我已经确认这不是浏览器端缓存,因为网络日志显示的是200响应,而不是304响应,如果我清除memcached并刷新页面,那么更新后的草稿将正确返回

最近,当我将Django从1.8升级到1.10、15个pip包依赖项、OS发行版及其包时,就发生了这种情况(因此很难确切地指出是什么导致了这种情况)

DRF检索API视图

from django.views.decorators.cache import never_cache

class DraftDetail(generics.RetrieveAPIView):
    queryset = Draft.objects.all()
    serializer_class = DraftSerializer
    permission_classes = (permissions.IsAuthenticated, HasReadWriteAccess)

    @never_cache
    def dispatch(self, *args, **kwargs):
        return super(DraftDetail, self).dispatch(*args, **kwargs)
我还尝试了另一种基于类的@method\u decorator,但没有改变:

from django.views.decorators.cache import never_cache
from django.utils.decorators import method_decorator

@method_decorator(never_cache, name='dispatch')
class DraftDetail(generics.RetrieveAPIView):
    queryset = Draft.objects.all()
    serializer_class = DraftSerializer
    permission_classes = (permissions.IsAuthenticated, HasReadWriteAccess)
设置.py

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
        'LOCATION': '127.0.0.1:11211',
    }
}
PYLIBMC_MIN_COMPRESS_LEN = 250
# The cache alias to use for storage.
CACHE_MIDDLEWARE_ALIAS = 'default'
# The number of seconds each page should be cached.
CACHE_MIDDLEWARE_SECONDS = 500
CACHE_MIDDLEWARE_KEY_PREFIX = 'app'

MIDDLEWARE_CLASSES = (
    'django.middleware.cache.UpdateCacheMiddleware',
    (...),
    'django.middleware.cache.FetchFromCacheMiddleware',
)
我的请求头中还设置了缓存控制:max age=0

也许吧

@method_decorator(never_cache())