1
0
mirror of https://github.com/django/django.git synced 2025-10-31 09:41:08 +00:00

Fixed #17061 -- Factored out importing object from a dotted path

Thanks Carl Meyer for the report.
This commit is contained in:
Claude Paroz
2013-02-02 22:58:02 +01:00
parent 3f1c7b7053
commit 7c5b244826
26 changed files with 116 additions and 255 deletions

View File

@@ -1,6 +1,5 @@
from copy import copy
from django.core.exceptions import ImproperlyConfigured
from django.utils.importlib import import_module
from django.utils.module_loading import import_by_path
# Cache of actual callables.
_standard_context_processors = None
@@ -146,16 +145,7 @@ def get_standard_processors():
collect.extend(_builtin_context_processors)
collect.extend(settings.TEMPLATE_CONTEXT_PROCESSORS)
for path in collect:
i = path.rfind('.')
module, attr = path[:i], path[i+1:]
try:
mod = import_module(module)
except ImportError as e:
raise ImproperlyConfigured('Error importing request processor module %s: "%s"' % (module, e))
try:
func = getattr(mod, attr)
except AttributeError:
raise ImproperlyConfigured('Module "%s" does not define a "%s" callable request processor' % (module, attr))
func = import_by_path(path)
processors.append(func)
_standard_context_processors = tuple(processors)
return _standard_context_processors

View File

@@ -27,8 +27,8 @@
from django.core.exceptions import ImproperlyConfigured
from django.template.base import Origin, Template, Context, TemplateDoesNotExist, add_to_builtins
from django.utils.importlib import import_module
from django.conf import settings
from django.utils.module_loading import import_by_path
from django.utils import six
template_source_loaders = None
@@ -91,15 +91,7 @@ def find_template_loader(loader):
else:
args = []
if isinstance(loader, six.string_types):
module, attr = loader.rsplit('.', 1)
try:
mod = import_module(module)
except ImportError as e:
raise ImproperlyConfigured('Error importing template source loader %s: "%s"' % (loader, e))
try:
TemplateLoader = getattr(mod, attr)
except AttributeError as e:
raise ImproperlyConfigured('Error importing template source loader %s: "%s"' % (loader, e))
TemplateLoader = import_by_path(loader)
if hasattr(TemplateLoader, 'load_template_source'):
func = TemplateLoader(*args)