你如何在每次结账时禁用Django缓存?
回到Django 1.3之前,我可以通过CACHE_BACKEND = None
在settings.py导入的settings_local.py中指定来禁用本地开发结帐的缓存.SVN忽略了settings_local.py,因此我总是可以确保我的本地环境没有缓存,而不必担心在settings.py中修改缓存参数.
现在,使用Django 1.3和新的CACHES = {...}结构,设置CACHES = None
或CACHES['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)
我在我的设置中使用它,所以它更灵活我的情况我想测试部署的缓存的用法(在这种情况下,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)
多个缓存的解决方案,您想要禁用所有缓存:
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)
在使用 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)