﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
21058	Template Error during render results in 500 error	jambonrose	ianawilson	"Consider:

{{{
from django.shortcuts import render

def testview(request):
    return render(request, [], {})
}}}

Accessing this view will raise a 500 error:
`A server error occurred.  Please contact the administrator.`

The traceback is as follows:
{{{
Internal Server Error: /path_to_view/
Traceback (most recent call last):
  File ""/Users/jambonrose/.virtualenvs/djtest/lib/python2.7/site-packages/django/core/handlers/base.py"", line 115, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File ""/Users/jambonrose/djtest/cbgvtest/views.py"", line 4, in testview
    return render(request, [], {})
  File ""/Users/jambonrose/.virtualenvs/djtest/lib/python2.7/site-packages/django/shortcuts/__init__.py"", line 53, in render
    return HttpResponse(loader.render_to_string(*args, **kwargs),
  File ""/Users/jambonrose/.virtualenvs/djtest/lib/python2.7/site-packages/django/template/loader.py"", line 168, in render_to_string
    t = select_template(template_name)
  File ""/Users/jambonrose/.virtualenvs/djtest/lib/python2.7/site-packages/django/template/loader.py"", line 184, in select_template
    raise TemplateDoesNotExist(""No template names provided"")
TemplateDoesNotExist: No template names provided
Traceback (most recent call last):
  File ""/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py"", line 85, in run
    self.result = application(self.environ, self.start_response)
  File ""/Users/jambonrose/.virtualenvs/djtest/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py"", line 72, in __call__
    return self.application(environ, start_response)
  File ""/Users/jambonrose/.virtualenvs/djtest/lib/python2.7/site-packages/django/core/handlers/wsgi.py"", line 255, in __call__
    response = self.get_response(request)
  File ""/Users/jambonrose/.virtualenvs/djtest/lib/python2.7/site-packages/django/core/handlers/base.py"", line 178, in get_response
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
  File ""/Users/jambonrose/.virtualenvs/djtest/lib/python2.7/site-packages/django/core/handlers/base.py"", line 217, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)
  File ""/Users/jambonrose/.virtualenvs/djtest/lib/python2.7/site-packages/django/views/debug.py"", line 69, in technical_500_response
    html = reporter.get_traceback_html()
  File ""/Users/jambonrose/.virtualenvs/djtest/lib/python2.7/site-packages/django/views/debug.py"", line 297, in get_traceback_html
    c = Context(self.get_traceback_data())
  File ""/Users/jambonrose/.virtualenvs/djtest/lib/python2.7/site-packages/django/views/debug.py"", line 237, in get_traceback_data
    for loader in template_source_loaders:
TypeError: 'NoneType' object is not iterable
[06/Sep/2013 15:19:35] ""GET /try/ HTTP/1.1"" 500 59
}}}

Django should instead be raising a `TemplateDoesNotExist` error.

The problem stems from interaction between `get_traceback_data` in `django/views/debug.py` and `find_template` in `django/template/loader.py` - the former assumes the latter has already run and provided `template_source_loaders` with values in a list (an empty list is valid behavior). However, in the case above, `find_template` is not run, and `template_source_loaders` is set to `None`.

The included patch checks for this, and replaces `None` with `[]` resulting with the correct behavior."	Bug	closed	Template system	1.5	Normal	fixed	template, TemplateDoesNotExist, render	ianawilson	Unreviewed	1	0	0	0	0	0
