#24922: Templates: conflicting settings should emit a system check error
-------------------------------------+-------------------------------------
     Reporter:  sergei-maertens      |                    Owner:  sergei-
                                     |  maertens
         Type:  Bug                  |                   Status:  assigned
    Component:  Core (System         |                  Version:  master
  checks)                            |
     Severity:  Normal               |               Resolution:
     Keywords:  templates, system    |             Triage Stage:
  check                              |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Description changed by sergei-maertens:

Old description:

> I discovered that specifying the templates settings as following, raises
> an error when rendering the template:
>
> {{{#!python
> TEMPLATES = [
>     {
>         'BACKEND': 'django.template.backends.django.DjangoTemplates',
>         'DIRS': [],
>         'APP_DIRS': True,
>         'OPTIONS': {
>             'context_processors': [
>                 'django.template.context_processors.debug',
>                 'django.template.context_processors.request',
>                 'django.contrib.auth.context_processors.auth',
>                 'django.contrib.messages.context_processors.messages',
>             ],
>         },
>         'loaders': [
>             ('django.template.loaders.cached.Loader', [
>                 'django.template.loaders.filesystem.Loader',
>                 'django.template.loaders.app_directories.Loader',
>             ]),
>         ],
>     },
> ]
> }}}
>
> Error:
> {{{
> Traceback (most recent call last):
>   File "/home/modelbrouw/.virtualenvs/staging/lib/python2.7/site-
> packages/django/core/handlers/wsgi.py", line 189, in __call__
>     response = self.get_response(request)
>   File "/home/modelbrouw/.virtualenvs/staging/lib/python2.7/site-
> packages/django/core/handlers/base.py", line 218, in get_response
>     response = self.handle_uncaught_exception(request, resolver,
> sys.exc_info())
>   File "/home/modelbrouw/.virtualenvs/staging/lib/python2.7/site-
> packages/django/core/handlers/base.py", line 268, in
> handle_uncaught_exception
>     return callback(request, **param_dict)
>   File "/home/modelbrouw/.virtualenvs/staging/lib/python2.7/site-
> packages/django/utils/decorators.py", line 110, in _wrapped_view
>     response = view_func(request, *args, **kwargs)
>   File "/home/modelbrouw/.virtualenvs/staging/lib/python2.7/site-
> packages/django/views/defaults.py", line 42, in server_error
>     template = loader.get_template(template_name)
>   File "/home/modelbrouw/.virtualenvs/staging/lib/python2.7/site-
> packages/django/template/loader.py", line 29, in get_template
>     engines = _engine_list(using)
>   File "/home/modelbrouw/.virtualenvs/staging/lib/python2.7/site-
> packages/django/template/loader.py", line 144, in _engine_list
>     return engines.all() if using is None else [engines[using]]
>   File "/home/modelbrouw/.virtualenvs/staging/lib/python2.7/site-
> packages/django/template/utils.py", line 110, in all
>     return [self[alias] for alias in self]
>   File "/home/modelbrouw/.virtualenvs/staging/lib/python2.7/site-
> packages/django/template/utils.py", line 101, in __getitem__
>     engine = engine_cls(params)
>   File "/home/modelbrouw/.virtualenvs/staging/lib/python2.7/site-
> packages/django/template/backends/django.py", line 24, in __init__
>     self.engine = Engine(self.dirs, self.app_dirs, **options)
>   File "/home/modelbrouw/.virtualenvs/staging/lib/python2.7/site-
> packages/django/template/engine.py", line 36, in __init__
>     "app_dirs must not be set when loaders is defined.")
> django.core.exceptions.ImproperlyConfigured: app_dirs must not be set
> when loaders is defined.
> }}}

New description:

 I discovered that specifying the templates settings as following, raises
 an error when rendering the template:

 {{{#!python
 TEMPLATES = [
     {
         'BACKEND': 'django.template.backends.django.DjangoTemplates',
         'DIRS': [os.path.join(BASE_DIR, 'templates')],
         'APP_DIRS': True,
         'OPTIONS': {
             'context_processors': [
                 'django.template.context_processors.debug',
                 'django.template.context_processors.request',
                 'django.contrib.auth.context_processors.auth',
                 'django.contrib.messages.context_processors.messages',
             ],
             'loaders': [
                 ('django.template.loaders.cached.Loader', [
                     'django.template.loaders.filesystem.Loader',
                     'django.template.loaders.app_directories.Loader',
                 ]),
             ],
         },
     },
 ]
 }}}

 urls.py:
 {{{#!python
 from django.conf.urls import include, url
 from django.contrib import admin

 from django.views.generic import TemplateView

 urlpatterns = [
     url(r'^admin/', include(admin.site.urls)),
     url(r'^$', TemplateView.as_view(template_name='test.html')),
 ]
 }}}

 Test template is just an empty file

 Error:
 {{{
 Environment:


 Request Method: GET
 Request URL: http://localhost:8000/

 Django Version: 1.8.2
 Python Version: 3.4.3
 Installed Applications:
 ('django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles')
 Installed Middleware:
 ('django.contrib.sessions.middleware.SessionMiddleware',
  'django.middleware.common.CommonMiddleware',
  'django.middleware.csrf.CsrfViewMiddleware',
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
  'django.contrib.messages.middleware.MessageMiddleware',
  'django.middleware.clickjacking.XFrameOptionsMiddleware',
  'django.middleware.security.SecurityMiddleware')


 Traceback:
 File "/home/bbt/coding/.virtualenvs/tpl_app_dirs/lib/python3.4/site-
 packages/django/core/handlers/base.py" in get_response
   164.                 response = response.render()
 File "/home/bbt/coding/.virtualenvs/tpl_app_dirs/lib/python3.4/site-
 packages/django/template/response.py" in render
   158.             self.content = self.rendered_content
 File "/home/bbt/coding/.virtualenvs/tpl_app_dirs/lib/python3.4/site-
 packages/django/template/response.py" in rendered_content
   133.         template = self._resolve_template(self.template_name)
 File "/home/bbt/coding/.virtualenvs/tpl_app_dirs/lib/python3.4/site-
 packages/django/template/response.py" in _resolve_template
   88.         new_template = self.resolve_template(template)
 File "/home/bbt/coding/.virtualenvs/tpl_app_dirs/lib/python3.4/site-
 packages/django/template/response.py" in resolve_template
   78.             return loader.select_template(template,
 using=self.using)
 File "/home/bbt/coding/.virtualenvs/tpl_app_dirs/lib/python3.4/site-
 packages/django/template/loader.py" in select_template
   57.     engines = _engine_list(using)
 File "/home/bbt/coding/.virtualenvs/tpl_app_dirs/lib/python3.4/site-
 packages/django/template/loader.py" in _engine_list
   144.     return engines.all() if using is None else [engines[using]]
 File "/home/bbt/coding/.virtualenvs/tpl_app_dirs/lib/python3.4/site-
 packages/django/template/utils.py" in all
   110.         return [self[alias] for alias in self]
 File "/home/bbt/coding/.virtualenvs/tpl_app_dirs/lib/python3.4/site-
 packages/django/template/utils.py" in <listcomp>
   110.         return [self[alias] for alias in self]
 File "/home/bbt/coding/.virtualenvs/tpl_app_dirs/lib/python3.4/site-
 packages/django/template/utils.py" in __getitem__
   101.             engine = engine_cls(params)
 File "/home/bbt/coding/.virtualenvs/tpl_app_dirs/lib/python3.4/site-
 packages/django/template/backends/django.py" in __init__
   24.         self.engine = Engine(self.dirs, self.app_dirs, **options)
 File "/home/bbt/coding/.virtualenvs/tpl_app_dirs/lib/python3.4/site-
 packages/django/template/engine.py" in __init__
   36.                     "app_dirs must not be set when loaders is
 defined.")

 Exception Type: ImproperlyConfigured at /
 Exception Value: app_dirs must not be set when loaders is defined.
 }}}

--

--
Ticket URL: <https://code.djangoproject.com/ticket/24922#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/073.16a5f320a4a973e1d0a0bca9c308684d%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to