Loading django/template/loader.py +31 −3 Original line number Diff line number Diff line Loading @@ -6,6 +6,9 @@ from django.template.loaders.utils import get_template_loaders from django.utils.deprecation import RemovedInDjango20Warning _dirs_undefined = object() class LoaderOrigin(Origin): def __init__(self, display_name, loader, name, dirs): super(LoaderOrigin, self).__init__(display_name) Loading @@ -32,11 +35,18 @@ def find_template(name, dirs=None): raise TemplateDoesNotExist(name) def get_template(template_name, dirs=None): def get_template(template_name, dirs=_dirs_undefined): """ Returns a compiled Template object for the given template name, handling template inheritance recursively. """ if dirs is _dirs_undefined: dirs = None else: warnings.warn( "The dirs argument of get_template is deprecated.", RemovedInDjango20Warning, stacklevel=2) template, origin = find_template(template_name, dirs) if not hasattr(template, 'render'): # template needs to be compiled Loading @@ -53,13 +63,22 @@ def get_template_from_string(source, origin=None, name=None): def render_to_string(template_name, dictionary=None, context_instance=None, dirs=None): dirs=_dirs_undefined): """ Loads the given template_name and renders it with the given dictionary as context. The template_name may be a string to load a single template using get_template, or it may be a tuple to use select_template to find one of the templates in the list. Returns a string. """ if dirs is _dirs_undefined: # Do not set dirs to None here to avoid triggering the deprecation # warning in select_template or get_template. pass else: warnings.warn( "The dirs argument of render_to_string is deprecated.", RemovedInDjango20Warning, stacklevel=2) if isinstance(template_name, (list, tuple)): t = select_template(template_name, dirs) else: Loading @@ -79,8 +98,17 @@ def render_to_string(template_name, dictionary=None, context_instance=None, return t.render(context_instance) def select_template(template_name_list, dirs=None): def select_template(template_name_list, dirs=_dirs_undefined): "Given a list of template names, returns the first that can be loaded." if dirs is _dirs_undefined: # Do not set dirs to None here to avoid triggering the deprecation # warning in get_template. pass else: warnings.warn( "The dirs argument of select_template is deprecated.", RemovedInDjango20Warning, stacklevel=2) if not template_name_list: raise TemplateDoesNotExist("No template names provided") not_found = [] Loading docs/ref/templates/api.txt +8 −6 Original line number Diff line number Diff line Loading @@ -659,25 +659,27 @@ The Python API the template with the given name. If the template doesn't exist, it raises ``django.template.TemplateDoesNotExist``. To override the :setting:`TEMPLATE_DIRS` setting, use the ``dirs`` parameter. The ``dirs`` parameter may be a tuple or list. .. versionchanged:: 1.7 The ``dirs`` parameter was added. .. versionchanged:: 1.8 The ``dirs`` parameter was deprecated. .. function:: select_template(template_name_list[, dirs]) ``select_template`` is just like ``get_template``, except it takes a list of template names. Of the list, it returns the first template that exists. To override the :setting:`TEMPLATE_DIRS` setting, use the ``dirs`` parameter. The ``dirs`` parameter may be a tuple or list. .. versionchanged:: 1.7 The ``dirs`` parameter was added. .. versionchanged:: 1.8 The ``dirs`` parameter was deprecated. For example, if you call ``get_template('story_detail.html')`` and have the above :setting:`TEMPLATE_DIRS` setting, here are the files Django will look for, in order: Loading docs/releases/1.8.txt +11 −0 Original line number Diff line number Diff line Loading @@ -1053,6 +1053,17 @@ The decorators :func:`~django.test.override_settings` and class decorators. As a consequence, when overriding ``setUpClass()`` or ``tearDownClass()``, the ``super`` implementation should always be called. ``dirs`` argument of template-finding functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The following functions no longer accept a ``dirs`` parameter to override :setting:`TEMPLATE_DIRS`: * :func:`django.template.loader.get_template()` * :func:`django.template.loader.select_template()` * :func:`django.shortcuts.render()` * :func:`django.shortcuts.render_to_response()` ``django.template.loader.BaseLoader`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Loading docs/topics/http/shortcuts.txt +8 −24 Original line number Diff line number Diff line Loading @@ -63,13 +63,14 @@ Optional arguments :ref:`namespaced URL resolution strategy <topics-http-reversing-url-namespaces>` for more information. ``dirs`` A tuple or list of values to override the :setting:`TEMPLATE_DIRS` setting. .. versionchanged:: 1.7 The ``dirs`` parameter was added. .. versionchanged:: 1.8 The ``dirs`` parameter was deprecated. Example ------- Loading @@ -95,15 +96,6 @@ This example is equivalent to:: return HttpResponse(t.render(c), content_type="application/xhtml+xml") If you want to override the :setting:`TEMPLATE_DIRS` setting, use the ``dirs`` parameter:: from django.shortcuts import render def my_view(request): # View code here... return render(request, 'index.html', dirs=('custom_templates',)) ``render_to_response`` ====================== Loading Loading @@ -145,13 +137,14 @@ Optional arguments The MIME type to use for the resulting document. Defaults to the value of the :setting:`DEFAULT_CONTENT_TYPE` setting. ``dirs`` A tuple or list of values to override the :setting:`TEMPLATE_DIRS` setting. .. versionchanged:: 1.7 The ``dirs`` parameter was added. .. versionchanged:: 1.8 The ``dirs`` parameter was deprecated. Example ------- Loading @@ -177,15 +170,6 @@ This example is equivalent to:: return HttpResponse(t.render(c), content_type="application/xhtml+xml") If you want to override the :setting:`TEMPLATE_DIRS` setting, use the ``dirs`` parameter:: from django.shortcuts import render_to_response def my_view(request): # View code here... return render_to_response('index.html', dirs=('custom_templates',)) ``redirect`` ============ Loading tests/shortcuts/tests.py +8 −2 Original line number Diff line number Diff line import warnings from django.utils.deprecation import RemovedInDjango20Warning from django.test import TestCase, override_settings Loading Loading @@ -27,6 +29,8 @@ class ShortcutTests(TestCase): self.assertEqual(response['Content-Type'], 'application/x-rendertest') def test_render_to_response_with_dirs(self): with warnings.catch_warnings(): warnings.filterwarnings("ignore", category=RemovedInDjango20Warning) response = self.client.get('/render_to_response/dirs/') self.assertEqual(response.status_code, 200) self.assertEqual(response.content, b'spam eggs\n') Loading Loading @@ -70,6 +74,8 @@ class ShortcutTests(TestCase): self.assertEqual(response.context.current_app, "foobar_app") def test_render_with_dirs(self): with warnings.catch_warnings(): warnings.filterwarnings("ignore", category=RemovedInDjango20Warning) response = self.client.get('/render/dirs/') self.assertEqual(response.status_code, 200) self.assertEqual(response.content, b'spam eggs\n') Loading Loading
django/template/loader.py +31 −3 Original line number Diff line number Diff line Loading @@ -6,6 +6,9 @@ from django.template.loaders.utils import get_template_loaders from django.utils.deprecation import RemovedInDjango20Warning _dirs_undefined = object() class LoaderOrigin(Origin): def __init__(self, display_name, loader, name, dirs): super(LoaderOrigin, self).__init__(display_name) Loading @@ -32,11 +35,18 @@ def find_template(name, dirs=None): raise TemplateDoesNotExist(name) def get_template(template_name, dirs=None): def get_template(template_name, dirs=_dirs_undefined): """ Returns a compiled Template object for the given template name, handling template inheritance recursively. """ if dirs is _dirs_undefined: dirs = None else: warnings.warn( "The dirs argument of get_template is deprecated.", RemovedInDjango20Warning, stacklevel=2) template, origin = find_template(template_name, dirs) if not hasattr(template, 'render'): # template needs to be compiled Loading @@ -53,13 +63,22 @@ def get_template_from_string(source, origin=None, name=None): def render_to_string(template_name, dictionary=None, context_instance=None, dirs=None): dirs=_dirs_undefined): """ Loads the given template_name and renders it with the given dictionary as context. The template_name may be a string to load a single template using get_template, or it may be a tuple to use select_template to find one of the templates in the list. Returns a string. """ if dirs is _dirs_undefined: # Do not set dirs to None here to avoid triggering the deprecation # warning in select_template or get_template. pass else: warnings.warn( "The dirs argument of render_to_string is deprecated.", RemovedInDjango20Warning, stacklevel=2) if isinstance(template_name, (list, tuple)): t = select_template(template_name, dirs) else: Loading @@ -79,8 +98,17 @@ def render_to_string(template_name, dictionary=None, context_instance=None, return t.render(context_instance) def select_template(template_name_list, dirs=None): def select_template(template_name_list, dirs=_dirs_undefined): "Given a list of template names, returns the first that can be loaded." if dirs is _dirs_undefined: # Do not set dirs to None here to avoid triggering the deprecation # warning in get_template. pass else: warnings.warn( "The dirs argument of select_template is deprecated.", RemovedInDjango20Warning, stacklevel=2) if not template_name_list: raise TemplateDoesNotExist("No template names provided") not_found = [] Loading
docs/ref/templates/api.txt +8 −6 Original line number Diff line number Diff line Loading @@ -659,25 +659,27 @@ The Python API the template with the given name. If the template doesn't exist, it raises ``django.template.TemplateDoesNotExist``. To override the :setting:`TEMPLATE_DIRS` setting, use the ``dirs`` parameter. The ``dirs`` parameter may be a tuple or list. .. versionchanged:: 1.7 The ``dirs`` parameter was added. .. versionchanged:: 1.8 The ``dirs`` parameter was deprecated. .. function:: select_template(template_name_list[, dirs]) ``select_template`` is just like ``get_template``, except it takes a list of template names. Of the list, it returns the first template that exists. To override the :setting:`TEMPLATE_DIRS` setting, use the ``dirs`` parameter. The ``dirs`` parameter may be a tuple or list. .. versionchanged:: 1.7 The ``dirs`` parameter was added. .. versionchanged:: 1.8 The ``dirs`` parameter was deprecated. For example, if you call ``get_template('story_detail.html')`` and have the above :setting:`TEMPLATE_DIRS` setting, here are the files Django will look for, in order: Loading
docs/releases/1.8.txt +11 −0 Original line number Diff line number Diff line Loading @@ -1053,6 +1053,17 @@ The decorators :func:`~django.test.override_settings` and class decorators. As a consequence, when overriding ``setUpClass()`` or ``tearDownClass()``, the ``super`` implementation should always be called. ``dirs`` argument of template-finding functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The following functions no longer accept a ``dirs`` parameter to override :setting:`TEMPLATE_DIRS`: * :func:`django.template.loader.get_template()` * :func:`django.template.loader.select_template()` * :func:`django.shortcuts.render()` * :func:`django.shortcuts.render_to_response()` ``django.template.loader.BaseLoader`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Loading
docs/topics/http/shortcuts.txt +8 −24 Original line number Diff line number Diff line Loading @@ -63,13 +63,14 @@ Optional arguments :ref:`namespaced URL resolution strategy <topics-http-reversing-url-namespaces>` for more information. ``dirs`` A tuple or list of values to override the :setting:`TEMPLATE_DIRS` setting. .. versionchanged:: 1.7 The ``dirs`` parameter was added. .. versionchanged:: 1.8 The ``dirs`` parameter was deprecated. Example ------- Loading @@ -95,15 +96,6 @@ This example is equivalent to:: return HttpResponse(t.render(c), content_type="application/xhtml+xml") If you want to override the :setting:`TEMPLATE_DIRS` setting, use the ``dirs`` parameter:: from django.shortcuts import render def my_view(request): # View code here... return render(request, 'index.html', dirs=('custom_templates',)) ``render_to_response`` ====================== Loading Loading @@ -145,13 +137,14 @@ Optional arguments The MIME type to use for the resulting document. Defaults to the value of the :setting:`DEFAULT_CONTENT_TYPE` setting. ``dirs`` A tuple or list of values to override the :setting:`TEMPLATE_DIRS` setting. .. versionchanged:: 1.7 The ``dirs`` parameter was added. .. versionchanged:: 1.8 The ``dirs`` parameter was deprecated. Example ------- Loading @@ -177,15 +170,6 @@ This example is equivalent to:: return HttpResponse(t.render(c), content_type="application/xhtml+xml") If you want to override the :setting:`TEMPLATE_DIRS` setting, use the ``dirs`` parameter:: from django.shortcuts import render_to_response def my_view(request): # View code here... return render_to_response('index.html', dirs=('custom_templates',)) ``redirect`` ============ Loading
tests/shortcuts/tests.py +8 −2 Original line number Diff line number Diff line import warnings from django.utils.deprecation import RemovedInDjango20Warning from django.test import TestCase, override_settings Loading Loading @@ -27,6 +29,8 @@ class ShortcutTests(TestCase): self.assertEqual(response['Content-Type'], 'application/x-rendertest') def test_render_to_response_with_dirs(self): with warnings.catch_warnings(): warnings.filterwarnings("ignore", category=RemovedInDjango20Warning) response = self.client.get('/render_to_response/dirs/') self.assertEqual(response.status_code, 200) self.assertEqual(response.content, b'spam eggs\n') Loading Loading @@ -70,6 +74,8 @@ class ShortcutTests(TestCase): self.assertEqual(response.context.current_app, "foobar_app") def test_render_with_dirs(self): with warnings.catch_warnings(): warnings.filterwarnings("ignore", category=RemovedInDjango20Warning) response = self.client.get('/render/dirs/') self.assertEqual(response.status_code, 200) self.assertEqual(response.content, b'spam eggs\n') Loading