Refs #13573 -- Modified the key technique added in r13295 to be more robust against potential key collisions while keeping key names human-readable. Thanks to Alex for being finicky.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13299 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
5acd9cd8ba
commit
84060a1f7a
|
@ -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.
|
to load templates from them in order, caching the result.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
from django.template import TemplateDoesNotExist
|
from django.template import TemplateDoesNotExist
|
||||||
from django.template.loader import BaseLoader, get_template_from_string, find_template_loader, make_origin
|
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.utils.importlib import import_module
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
|
||||||
|
|
||||||
class Loader(BaseLoader):
|
class Loader(BaseLoader):
|
||||||
is_usable = True
|
is_usable = True
|
||||||
|
@ -34,8 +35,10 @@ class Loader(BaseLoader):
|
||||||
raise TemplateDoesNotExist(name)
|
raise TemplateDoesNotExist(name)
|
||||||
|
|
||||||
def load_template(self, template_name, template_dirs=None):
|
def load_template(self, template_name, template_dirs=None):
|
||||||
# Use hash(..) to avoid saving potentially large template_dirs values
|
key = template_name
|
||||||
key = hash((template_name, template_dirs))
|
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:
|
if key not in self.template_cache:
|
||||||
template, origin = self.find_template(template_name, template_dirs)
|
template, origin = self.find_template(template_name, template_dirs)
|
||||||
|
|
Loading…
Reference in New Issue