Added further fixes, tests for #19949/f33db5a09a.
Thanks Susan Tan. Refs #19949.
This commit is contained in:
parent
51a9a5980a
commit
b785a80d19
|
@ -37,6 +37,9 @@ class Loader(BaseLoader):
|
||||||
return template_name
|
return template_name
|
||||||
|
|
||||||
def find_template(self, name, dirs=None):
|
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)
|
key = self.cache_key(name, dirs)
|
||||||
try:
|
try:
|
||||||
result = self.find_template_cache[key]
|
result = self.find_template_cache[key]
|
||||||
|
@ -53,12 +56,13 @@ class Loader(BaseLoader):
|
||||||
if result:
|
if result:
|
||||||
return result
|
return result
|
||||||
else:
|
else:
|
||||||
|
self.template_cache[key] = TemplateDoesNotExist
|
||||||
raise TemplateDoesNotExist(name)
|
raise TemplateDoesNotExist(name)
|
||||||
|
|
||||||
def load_template(self, template_name, template_dirs=None):
|
def load_template(self, template_name, template_dirs=None):
|
||||||
key = self.cache_key(template_name, template_dirs)
|
key = self.cache_key(template_name, template_dirs)
|
||||||
template_tuple = self.template_cache.get(key)
|
template_tuple = self.template_cache.get(key)
|
||||||
# cached a previous failure:
|
# A cached previous failure:
|
||||||
if template_tuple is TemplateDoesNotExist:
|
if template_tuple is TemplateDoesNotExist:
|
||||||
raise TemplateDoesNotExist
|
raise TemplateDoesNotExist
|
||||||
elif template_tuple is None:
|
elif template_tuple is None:
|
||||||
|
|
|
@ -129,13 +129,19 @@ class CachedLoader(unittest.TestCase):
|
||||||
self.assertNotEqual(t1.render(Context({})), t2.render(Context({})))
|
self.assertNotEqual(t1.render(Context({})), t2.render(Context({})))
|
||||||
|
|
||||||
def test_missing_template_is_cached(self):
|
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])
|
template_loader = loader.find_template_loader(settings.TEMPLATE_LOADERS[0])
|
||||||
# Empty cache, which may be filled from previous tests.
|
# Empty cache, which may be filled from previous tests.
|
||||||
template_loader.reset()
|
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"])
|
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")
|
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):
|
class RenderToStringTest(unittest.TestCase):
|
||||||
|
|
Loading…
Reference in New Issue