Skip to content

Commit

Permalink
Added further fixes, tests for #19949/f33db5a09a.
Browse files Browse the repository at this point in the history
Thanks Susan Tan. Refs #19949.
  • Loading branch information
ramiro committed Aug 26, 2013
1 parent 51a9a59 commit b785a80
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
6 changes: 5 additions & 1 deletion django/template/loaders/cached.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ def cache_key(self, template_name, template_dirs):
return template_name

def find_template(self, name, dirs=None):
"""
Helper method. Lookup the template :param name: in all the configured loaders
"""
key = self.cache_key(name, dirs)
try:
result = self.find_template_cache[key]
Expand All @@ -53,12 +56,13 @@ def find_template(self, name, dirs=None):
if result:
return result
else:
self.template_cache[key] = TemplateDoesNotExist
raise TemplateDoesNotExist(name)

def load_template(self, template_name, template_dirs=None):
key = self.cache_key(template_name, template_dirs)
template_tuple = self.template_cache.get(key)
# cached a previous failure:
# A cached previous failure:
if template_tuple is TemplateDoesNotExist:
raise TemplateDoesNotExist
elif template_tuple is None:
Expand Down
10 changes: 8 additions & 2 deletions tests/template_tests/test_loaders.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,13 +129,19 @@ def test_templatedir_caching(self):
self.assertNotEqual(t1.render(Context({})), t2.render(Context({})))

def test_missing_template_is_cached(self):
"Check that the missing template is cached."
"#19949 -- Check that the missing template is cached."
template_loader = loader.find_template_loader(settings.TEMPLATE_LOADERS[0])
# Empty cache, which may be filled from previous tests.
template_loader.reset()
# Check that 'missing.html' isn't already in cache before 'missing.html' is loaed
# Check that 'missing.html' isn't already in cache before 'missing.html' is loaded
self.assertRaises(KeyError, lambda: template_loader.template_cache["missing.html"])
# Try to load it, it should fail
self.assertRaises(TemplateDoesNotExist, template_loader.load_template, "missing.html")
# Verify that the fact that the missing template, which hasn't been found, has actually
# been cached:
self.assertEqual(template_loader.template_cache.get("missing.html"),
TemplateDoesNotExist,
"Cached template loader doesn't cache file lookup misses. It should.")


class RenderToStringTest(unittest.TestCase):
Expand Down

0 comments on commit b785a80

Please sign in to comment.