﻿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
34427	Improve error message for incorrect context processors	Adam Johnson	David Sanders	"If you write a template context processor but return the wrong type, for example `None` by missing the return statement:

{{{
def data(request):
    data = {""something"": True}
}}}

Then currently the error message is very mysterious:

{{{
Internal Server Error: /
Traceback (most recent call last):
  ...
  File ""/..../site-packages/django/template/backends/django.py"", line 61, in render
    return self.template.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ""/..../site-packages/django/template/base.py"", line 173, in render
    with context.bind_template(self):
  File ""/.../lib/python3.11/contextlib.py"", line 137, in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
  File ""/..../site-packages/django/template/context.py"", line 254, in bind_template
    updates.update(processor(self.request))
TypeError: 'NoneType' object is not iterable
}}}

If a view returns the wrong type, Django raises a nice error message:

{{{
The view example.views.index didn't return an HttpResponse object. It returned None instead.
}}}

I suggest we do the same for context processors. If we use try/except around the `updates.update()` line, it will not slow down normal processing any noticeable amount, thanks to Python 3.11's “zero-cost” exception handling: https://docs.python.org/3.11/whatsnew/3.11.html#misc"	New feature	closed	Template system	dev	Normal	fixed			Ready for checkin	1	0	0	0	0	0
