summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/template/loaders/cached.py3
-rw-r--r--django/utils/cache.py2
-rw-r--r--django/utils/crypto.py4
3 files changed, 5 insertions, 4 deletions
diff --git a/django/template/loaders/cached.py b/django/template/loaders/cached.py
index 4c25acd599..fb987a5e3a 100644
--- a/django/template/loaders/cached.py
+++ b/django/template/loaders/cached.py
@@ -6,6 +6,7 @@ to load templates from them in order, caching the result.
import hashlib
from django.template.base import TemplateDoesNotExist
from django.template.loader import BaseLoader, get_template_from_string, find_template_loader, make_origin
+from django.utils.encoding import force_bytes
class Loader(BaseLoader):
is_usable = True
@@ -40,7 +41,7 @@ class Loader(BaseLoader):
key = template_name
if template_dirs:
# If template directories were specified, use a hash to differentiate
- key = '-'.join([template_name, hashlib.sha1('|'.join(template_dirs)).hexdigest()])
+ key = '-'.join([template_name, hashlib.sha1(force_bytes('|'.join(template_dirs))).hexdigest()])
if key not in self.template_cache:
template, origin = self.find_template(template_name, template_dirs)
diff --git a/django/utils/cache.py b/django/utils/cache.py
index 0fceaa96e6..ecf0f831b2 100644
--- a/django/utils/cache.py
+++ b/django/utils/cache.py
@@ -181,7 +181,7 @@ def _generate_cache_key(request, method, headerlist, key_prefix):
for header in headerlist:
value = request.META.get(header, None)
if value is not None:
- ctx.update(value)
+ ctx.update(force_bytes(value))
path = hashlib.md5(force_bytes(iri_to_uri(request.get_full_path())))
cache_key = 'views.decorators.cache.cache_page.%s.%s.%s.%s' % (
key_prefix, method, path.hexdigest(), ctx.hexdigest())
diff --git a/django/utils/crypto.py b/django/utils/crypto.py
index 57bc60dc4f..94f717bb17 100644
--- a/django/utils/crypto.py
+++ b/django/utils/crypto.py
@@ -72,10 +72,10 @@ def get_random_string(length=12,
# is better than absolute predictability.
random.seed(
hashlib.sha256(
- "%s%s%s" % (
+ ("%s%s%s" % (
random.getstate(),
time.time(),
- settings.SECRET_KEY)
+ settings.SECRET_KEY)).encode('utf-8')
).digest())
return ''.join([random.choice(allowed_chars) for i in range(length)])