summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/utils/cache.py4
-rw-r--r--tests/regressiontests/cache/tests.py4
2 files changed, 5 insertions, 3 deletions
diff --git a/django/utils/cache.py b/django/utils/cache.py
index 1015c2f277..0ea84072fa 100644
--- a/django/utils/cache.py
+++ b/django/utils/cache.py
@@ -165,7 +165,9 @@ def _i18n_cache_key_suffix(request, cache_key):
# which in turn can also fall back to settings.LANGUAGE_CODE
cache_key += '.%s' % getattr(request, 'LANGUAGE_CODE', get_language())
if settings.USE_TZ:
- cache_key += '.%s' % get_current_timezone_name()
+ # Windows uses non-standard timezone names that may include spaces,
+ # which triggers CacheKeyWarning.
+ cache_key += '.%s' % get_current_timezone_name().replace(' ', '_')
return cache_key
def _generate_cache_key(request, method, headerlist, key_prefix):
diff --git a/tests/regressiontests/cache/tests.py b/tests/regressiontests/cache/tests.py
index 779e3fedf8..8faaa6fdc4 100644
--- a/tests/regressiontests/cache/tests.py
+++ b/tests/regressiontests/cache/tests.py
@@ -1270,7 +1270,7 @@ class CacheI18nTest(TestCase):
@override_settings(USE_I18N=False, USE_L10N=False, USE_TZ=True)
def test_cache_key_i18n_timezone(self):
request = self._get_request()
- tz = timezone.get_current_timezone_name()
+ tz = timezone.get_current_timezone_name().replace(' ', '_')
response = HttpResponse()
key = learn_cache_key(request, response)
self.assertIn(tz, key, "Cache keys should include the time zone name when time zones are active")
@@ -1281,7 +1281,7 @@ class CacheI18nTest(TestCase):
def test_cache_key_no_i18n (self):
request = self._get_request()
lang = translation.get_language()
- tz = timezone.get_current_timezone_name()
+ tz = timezone.get_current_timezone_name().replace(' ', '_')
response = HttpResponse()
key = learn_cache_key(request, response)
self.assertNotIn(lang, key, "Cache keys shouldn't include the language name when i18n isn't active")