mirror of
https://github.com/django/django.git
synced 2025-11-07 07:15:35 +00:00
Fixed #15144 -- Corrected some problems with the Cache middleware when used with multiple cache settings. Thanks to Jim Dalton for the report, and to Jim and Joshua Ginsberg for the work on the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15285 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
1
django/core/cache/__init__.py
vendored
1
django/core/cache/__init__.py
vendored
@@ -110,6 +110,7 @@ def parse_backend_conf(backend, **kwargs):
|
||||
conf = settings.CACHES.get(backend, None)
|
||||
if conf is not None:
|
||||
args = conf.copy()
|
||||
args.update(kwargs)
|
||||
backend = args.pop('BACKEND')
|
||||
location = args.pop('LOCATION', '')
|
||||
return backend, location, args
|
||||
|
||||
@@ -65,7 +65,8 @@ class UpdateCacheMiddleware(object):
|
||||
self.cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
|
||||
self.key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
|
||||
self.cache_anonymous_only = getattr(settings, 'CACHE_MIDDLEWARE_ANONYMOUS_ONLY', False)
|
||||
self.cache = get_cache(settings.CACHE_MIDDLEWARE_ALIAS)
|
||||
self.cache_alias = settings.CACHE_MIDDLEWARE_ALIAS
|
||||
self.cache = get_cache(self.cache_alias)
|
||||
|
||||
def process_response(self, request, response):
|
||||
"""Sets the cache, if needed."""
|
||||
@@ -101,7 +102,8 @@ class FetchFromCacheMiddleware(object):
|
||||
self.cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
|
||||
self.key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
|
||||
self.cache_anonymous_only = getattr(settings, 'CACHE_MIDDLEWARE_ANONYMOUS_ONLY', False)
|
||||
self.cache = get_cache(settings.CACHE_MIDDLEWARE_ALIAS)
|
||||
self.cache_alias = settings.CACHE_MIDDLEWARE_ALIAS
|
||||
self.cache = get_cache(self.cache_alias)
|
||||
|
||||
def process_request(self, request):
|
||||
"""
|
||||
@@ -152,8 +154,9 @@ class CacheMiddleware(UpdateCacheMiddleware, FetchFromCacheMiddleware):
|
||||
# we need to use middleware defaults.
|
||||
|
||||
cache_kwargs = {}
|
||||
|
||||
try:
|
||||
self.key_prefix = kwargs.get('key_prefix')
|
||||
self.key_prefix = kwargs['key_prefix']
|
||||
if self.key_prefix is not None:
|
||||
cache_kwargs['KEY_PREFIX'] = self.key_prefix
|
||||
else:
|
||||
@@ -161,14 +164,15 @@ class CacheMiddleware(UpdateCacheMiddleware, FetchFromCacheMiddleware):
|
||||
except KeyError:
|
||||
self.key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
|
||||
cache_kwargs['KEY_PREFIX'] = self.key_prefix
|
||||
|
||||
try:
|
||||
cache_alias = kwargs.get('cache_alias')
|
||||
if cache_alias is None:
|
||||
cache_alias = DEFAULT_CACHE_ALIAS
|
||||
self.cache_alias = kwargs['cache_alias']
|
||||
if self.cache_alias is None:
|
||||
self.cache_alias = DEFAULT_CACHE_ALIAS
|
||||
if cache_timeout is not None:
|
||||
cache_kwargs['TIMEOUT'] = cache_timeout
|
||||
except KeyError:
|
||||
cache_alias = settings.CACHE_MIDDLEWARE_ALIAS
|
||||
self.cache_alias = settings.CACHE_MIDDLEWARE_ALIAS
|
||||
if cache_timeout is None:
|
||||
cache_kwargs['TIMEOUT'] = settings.CACHE_MIDDLEWARE_SECONDS
|
||||
else:
|
||||
@@ -179,5 +183,5 @@ class CacheMiddleware(UpdateCacheMiddleware, FetchFromCacheMiddleware):
|
||||
else:
|
||||
self.cache_anonymous_only = cache_anonymous_only
|
||||
|
||||
self.cache = get_cache(cache_alias, **cache_kwargs)
|
||||
self.cache = get_cache(self.cache_alias, **cache_kwargs)
|
||||
self.cache_timeout = self.cache.default_timeout
|
||||
|
||||
Reference in New Issue
Block a user