diff --git a/django/template/loaders/cached.py b/django/template/loaders/cached.py index 7d4e1ef0c2..9a56b5ebd3 100644 --- a/django/template/loaders/cached.py +++ b/django/template/loaders/cached.py @@ -3,10 +3,11 @@ Wrapper class that takes a list of template loaders as an argument and attempts to load templates from them in order, caching the result. """ +from django.core.exceptions import ImproperlyConfigured from django.template import TemplateDoesNotExist from django.template.loader import BaseLoader, get_template_from_string, find_template_loader, make_origin +from django.utils.hashcompat import sha_constructor from django.utils.importlib import import_module -from django.core.exceptions import ImproperlyConfigured class Loader(BaseLoader): is_usable = True @@ -34,8 +35,10 @@ class Loader(BaseLoader): raise TemplateDoesNotExist(name) def load_template(self, template_name, template_dirs=None): - # Use hash(..) to avoid saving potentially large template_dirs values - key = hash((template_name, template_dirs)) + key = template_name + if template_dirs: + # If template directories were specified, use a hash to differentiate + key = '-'.join([template_name, sha_constructor('|'.join(template_dirs)).hexdigest()]) if key not in self.template_cache: template, origin = self.find_template(template_name, template_dirs)