diff --git a/django/template/loaders/utils.py b/django/template/loaders/utils.py index fe7234ea1c..a49b3ecfde 100644 --- a/django/template/loaders/utils.py +++ b/django/template/loaders/utils.py @@ -4,7 +4,6 @@ from django.conf import settings from django.core.exceptions import ImproperlyConfigured from django.utils import lru_cache from django.utils import six -from django.utils.deprecation import RemovedInDjango20Warning from django.utils.module_loading import import_string @@ -28,34 +27,20 @@ def find_template_loader(loader): loader, args = loader[0], loader[1:] else: args = [] + if isinstance(loader, six.string_types): - TemplateLoader = import_string(loader) + loader_class = import_string(loader) + loader_instance = loader_class(*args) - if hasattr(TemplateLoader, 'load_template_source'): - func = TemplateLoader(*args) - else: - warnings.warn( - "Function-based template loaders are deprecated. " - "Please use class-based template loaders instead. " - "Inherit django.template.loaders.base.Loader " - "and provide a load_template_source() method.", - RemovedInDjango20Warning, stacklevel=2) - - # Try loading module the old way - string is full path to callable - if args: - raise ImproperlyConfigured( - "Error importing template source loader %s - can't pass " - "arguments to function-based loader." % loader) - func = TemplateLoader - - if not func.is_usable: + if not loader_instance.is_usable: warnings.warn( "Your TEMPLATE_LOADERS setting includes %r, but your Python " "installation doesn't support that type of template loading. " "Consider removing that line from TEMPLATE_LOADERS." % loader) return None else: - return func + return loader_instance + else: raise ImproperlyConfigured( "Invalid value in TEMPLATE_LOADERS: %r" % loader) diff --git a/docs/internals/deprecation.txt b/docs/internals/deprecation.txt index 7247e4a2aa..666ff1f492 100644 --- a/docs/internals/deprecation.txt +++ b/docs/internals/deprecation.txt @@ -85,8 +85,6 @@ details on these changes. * The backwards compatibility alias ``django.template.loader.BaseLoader`` will be removed. -* Support for function-based template loaders will be removed. - .. _deprecation-removed-in-1.9: 1.9 diff --git a/docs/releases/1.8.txt b/docs/releases/1.8.txt index d55ed1820d..73c0e7a040 100644 --- a/docs/releases/1.8.txt +++ b/docs/releases/1.8.txt @@ -1040,13 +1040,6 @@ class decorators. As a consequence, when overriding ``setUpClass()`` or ``django.template.loaders.base.Loader``. If you've written a custom template loader that inherits ``BaseLoader``, you must inherit ``Loader`` instead. -Function-based template loaders -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -In addition to the documented class-based API for custom template loaders, -Django still supported to some extent an earlier function-based API. This -private API wasn't maintained or tested. Now it's formally deprecated. - ``django.test.utils.TestTemplateLoader`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~