Made the cache locale-dependant when USE_L10N is True, even if USE_I18N is False. Refs #5691.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17061 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
01964fd7e4
commit
af1893c4ff
|
@ -158,7 +158,7 @@ def has_vary_header(response, header_query):
|
||||||
|
|
||||||
def _i18n_cache_key_suffix(request, cache_key):
|
def _i18n_cache_key_suffix(request, cache_key):
|
||||||
"""If enabled, returns the cache key ending with a locale."""
|
"""If enabled, returns the cache key ending with a locale."""
|
||||||
if settings.USE_I18N:
|
if settings.USE_I18N or settings.USE_L10N:
|
||||||
# first check if LocaleMiddleware or another middleware added
|
# first check if LocaleMiddleware or another middleware added
|
||||||
# LANGUAGE_CODE to request, then fall back to the active language
|
# LANGUAGE_CODE to request, then fall back to the active language
|
||||||
# which in turn can also fall back to settings.LANGUAGE_CODE
|
# which in turn can also fall back to settings.LANGUAGE_CODE
|
||||||
|
|
|
@ -498,6 +498,10 @@ include the name of the active :term:`language<language code>` -- see also
|
||||||
:ref:`how-django-discovers-language-preference`). This allows you to easily
|
:ref:`how-django-discovers-language-preference`). This allows you to easily
|
||||||
cache multilingual sites without having to create the cache key yourself.
|
cache multilingual sites without having to create the cache key yourself.
|
||||||
|
|
||||||
|
.. versionchanged:: 1.4
|
||||||
|
|
||||||
|
This also happens when :setting:`USE_L10N` is set to ``True``.
|
||||||
|
|
||||||
__ `Controlling cache: Using other headers`_
|
__ `Controlling cache: Using other headers`_
|
||||||
|
|
||||||
The per-view cache
|
The per-view cache
|
||||||
|
|
|
@ -1154,23 +1154,33 @@ class CacheI18nTest(TestCase):
|
||||||
request.session = {}
|
request.session = {}
|
||||||
return request
|
return request
|
||||||
|
|
||||||
@override_settings(USE_I18N=True)
|
@override_settings(USE_I18N=True, USE_L10N=False)
|
||||||
def test_cache_key_i18n(self):
|
def test_cache_key_i18n_translation(self):
|
||||||
request = self._get_request()
|
request = self._get_request()
|
||||||
lang = translation.get_language()
|
lang = translation.get_language()
|
||||||
response = HttpResponse()
|
response = HttpResponse()
|
||||||
key = learn_cache_key(request, response)
|
key = learn_cache_key(request, response)
|
||||||
self.assertTrue(key.endswith(lang), "Cache keys should include the language name when i18n is active")
|
self.assertIn(lang, key, "Cache keys should include the language name when translation is active")
|
||||||
key2 = get_cache_key(request)
|
key2 = get_cache_key(request)
|
||||||
self.assertEqual(key, key2)
|
self.assertEqual(key, key2)
|
||||||
|
|
||||||
@override_settings(USE_I18N=False)
|
@override_settings(USE_I18N=False, USE_L10N=True)
|
||||||
|
def test_cache_key_i18n_formatting(self):
|
||||||
|
request = self._get_request()
|
||||||
|
lang = translation.get_language()
|
||||||
|
response = HttpResponse()
|
||||||
|
key = learn_cache_key(request, response)
|
||||||
|
self.assertIn(lang, key, "Cache keys should include the language name when formatting is active")
|
||||||
|
key2 = get_cache_key(request)
|
||||||
|
self.assertEqual(key, key2)
|
||||||
|
|
||||||
|
@override_settings(USE_I18N=False, USE_L10N=False)
|
||||||
def test_cache_key_no_i18n (self):
|
def test_cache_key_no_i18n (self):
|
||||||
request = self._get_request()
|
request = self._get_request()
|
||||||
lang = translation.get_language()
|
lang = translation.get_language()
|
||||||
response = HttpResponse()
|
response = HttpResponse()
|
||||||
key = learn_cache_key(request, response)
|
key = learn_cache_key(request, response)
|
||||||
self.assertFalse(key.endswith(lang), "Cache keys shouldn't include the language name when i18n is inactive")
|
self.assertNotIn(lang, key, "Cache keys shouldn't include the language name when i18n isn't active")
|
||||||
|
|
||||||
@override_settings(
|
@override_settings(
|
||||||
CACHE_MIDDLEWARE_KEY_PREFIX="test",
|
CACHE_MIDDLEWARE_KEY_PREFIX="test",
|
||||||
|
|
Loading…
Reference in New Issue