暂时禁用Django缓存

Cer*_*rin 27 python django

你如何在每次结账时禁用Django缓存?

回到Django 1.3之前,我可以通过CACHE_BACKEND = None在settings.py导入的settings_local.py中指定来禁用本地开发结帐的缓存.SVN忽略了settings_local.py,因此我总是可以确保我的本地环境没有缓存,而不必担心在settings.py中修改缓存参数.

现在,使用Django 1.3和新的CACHES = {...}结构,设置CACHES = NoneCACHES['default']['BACKEND'] = None导致Django窒息,并且设置CACHES = {}似乎仍然启用基本缓存.

Fur*_*tor 58

https://docs.djangoproject.com/en/1.3/topics/cache/

虚拟缓存(用于开发) - 这实际上并不缓存,因此您可以在开发方面使用它.

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
    }
}
Run Code Online (Sandbox Code Playgroud)


mic*_*mit 9

我在我的设置中使用它,所以它更灵活我的情况我想测试部署的缓存的用法(在这种情况下,memcache)

TEST_MEMCACHE = False
if not DEBUG or TEST_MEMCACHE:
    CACHES = {
        'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
        }
    }
else:
    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
        }
}
Run Code Online (Sandbox Code Playgroud)


kra*_*mir 5

多个缓存的解决方案,您想要禁用所有缓存:

if True:
    CACHES = {
        k : {'BACKEND': 'django.core.cache.backends.dummy.DummyCache',}
        for k,v in CACHES.iteritems()
    }
Run Code Online (Sandbox Code Playgroud)

如果您要禁用某些缓存的解决方案,可能会有所帮助:

if True:
    disable_names = [ 'cache_name' ]
    for name in disable_names:
        CACHES[name] = {'BACKEND' : 'django.core.cache.backends.dummy.DummyCache',}
Run Code Online (Sandbox Code Playgroud)


gia*_*tas 5

在使用 DRF 的同时,在某些视图中,我会使用django.views.decorators.cache.cache_page. 接受的答案对我不起作用,我在拆卸时求助于清除缓存

from django.core.cache import cache
from rest_framework.test import APITestCase

class SomeTestCase(APITestCase):

    def tearDown(self):
        cache.clear()

Run Code Online (Sandbox Code Playgroud)