Loading django/template/base.py +1 −0 Original line number Diff line number Diff line Loading @@ -124,6 +124,7 @@ class Template(object): origin = StringOrigin(template_string) self.nodelist = compile_string(template_string, origin) self.name = name self.origin = origin def __iter__(self): for node in self.nodelist: Loading docs/ref/templates/api.txt +36 −1 Original line number Diff line number Diff line Loading @@ -759,10 +759,45 @@ Django uses the template loaders in order according to the :setting:`TEMPLATE_LOADERS` setting. It uses each loader until a loader finds a match. .. currentmodule:: django.template Template origin ~~~~~~~~~~~~~~~ .. versionadded:: 1.7 When :setting:`TEMPLATE_DEBUG` is ``True`` template objects will have an ``origin`` attribute depending on the source they are loaded from. .. class:: loader.LoaderOrigin Templates created from a template loader will use the ``django.template.loader.LoaderOrigin`` class. .. attribute:: name The path to the template as returned by the template loader. For loaders that read from the file system, this is the full path to the template. .. attribute:: loadname The relative path to the template as passed into the template loader. .. class:: StringOrigin Templates created from a ``Template`` class will use the ``django.template.StringOrigin`` class. .. attribute:: source The string used to create the template. The ``render_to_string`` shortcut =================================== .. function:: django.template.loader.render_to_string(template_name, dictionary=None, context_instance=None) .. function:: loader.render_to_string(template_name, dictionary=None, context_instance=None) To cut down on the repetitive nature of loading and rendering templates, Django provides a shortcut function which largely Loading docs/releases/1.7.txt +4 −0 Original line number Diff line number Diff line Loading @@ -272,6 +272,10 @@ Templates * It is now possible to :ttag:`include` templates recursively. * Template objects now have an origin attribute set when :setting:`TEMPLATE_DEBUG` is ``True``. This allows template origins to be inspected and logged outside of the ``django.template`` infrastructure. Backwards incompatible changes in 1.7 ===================================== Loading tests/template_tests/tests.py +13 −0 Original line number Diff line number Diff line Loading @@ -236,6 +236,19 @@ class TemplateLoaderTests(TestCase): loader.template_source_loaders = old_loaders settings.TEMPLATE_DEBUG = old_td def test_loader_origin(self): with self.settings(TEMPLATE_DEBUG=True): template = loader.get_template('login.html') self.assertEqual(template.origin.loadname, 'login.html') def test_string_origin(self): with self.settings(TEMPLATE_DEBUG=True): template = Template('string template') self.assertEqual(template.origin.source, 'string template') def test_debug_false_origin(self): template = loader.get_template('login.html') self.assertEqual(template.origin, None) def test_include_missing_template(self): """ Loading Loading
django/template/base.py +1 −0 Original line number Diff line number Diff line Loading @@ -124,6 +124,7 @@ class Template(object): origin = StringOrigin(template_string) self.nodelist = compile_string(template_string, origin) self.name = name self.origin = origin def __iter__(self): for node in self.nodelist: Loading
docs/ref/templates/api.txt +36 −1 Original line number Diff line number Diff line Loading @@ -759,10 +759,45 @@ Django uses the template loaders in order according to the :setting:`TEMPLATE_LOADERS` setting. It uses each loader until a loader finds a match. .. currentmodule:: django.template Template origin ~~~~~~~~~~~~~~~ .. versionadded:: 1.7 When :setting:`TEMPLATE_DEBUG` is ``True`` template objects will have an ``origin`` attribute depending on the source they are loaded from. .. class:: loader.LoaderOrigin Templates created from a template loader will use the ``django.template.loader.LoaderOrigin`` class. .. attribute:: name The path to the template as returned by the template loader. For loaders that read from the file system, this is the full path to the template. .. attribute:: loadname The relative path to the template as passed into the template loader. .. class:: StringOrigin Templates created from a ``Template`` class will use the ``django.template.StringOrigin`` class. .. attribute:: source The string used to create the template. The ``render_to_string`` shortcut =================================== .. function:: django.template.loader.render_to_string(template_name, dictionary=None, context_instance=None) .. function:: loader.render_to_string(template_name, dictionary=None, context_instance=None) To cut down on the repetitive nature of loading and rendering templates, Django provides a shortcut function which largely Loading
docs/releases/1.7.txt +4 −0 Original line number Diff line number Diff line Loading @@ -272,6 +272,10 @@ Templates * It is now possible to :ttag:`include` templates recursively. * Template objects now have an origin attribute set when :setting:`TEMPLATE_DEBUG` is ``True``. This allows template origins to be inspected and logged outside of the ``django.template`` infrastructure. Backwards incompatible changes in 1.7 ===================================== Loading
tests/template_tests/tests.py +13 −0 Original line number Diff line number Diff line Loading @@ -236,6 +236,19 @@ class TemplateLoaderTests(TestCase): loader.template_source_loaders = old_loaders settings.TEMPLATE_DEBUG = old_td def test_loader_origin(self): with self.settings(TEMPLATE_DEBUG=True): template = loader.get_template('login.html') self.assertEqual(template.origin.loadname, 'login.html') def test_string_origin(self): with self.settings(TEMPLATE_DEBUG=True): template = Template('string template') self.assertEqual(template.origin.source, 'string template') def test_debug_false_origin(self): template = loader.get_template('login.html') self.assertEqual(template.origin, None) def test_include_missing_template(self): """ Loading