Fixed #25373 -- Added warning logging for exceptions during {% include %} tag rendering.

This commit is contained in:
Nick Johnson 2015-09-11 16:35:21 -07:00 committed by Tim Graham
parent 85c52743f7
commit 392f64842f
4 changed files with 75 additions and 8 deletions

View file

@ -673,9 +673,14 @@ if it's missing or has syntax errors), the behavior varies depending on the
:class:`template engine's <django.template.Engine>` ``debug`` option (if not
set, this option defaults to the value of :setting:`DEBUG`). When debug mode is
turned on, an exception like :exc:`~django.template.TemplateDoesNotExist` or
:exc:`~django.template.TemplateSyntaxError` will be raised; otherwise
``{% include %}`` silences any exception that happens while rendering the
included template and returns an empty string.
:exc:`~django.template.TemplateSyntaxError` will be raised. When debug mode
is turned off, ``{% include %}`` logs a warning to the ``django.template``
logger with the exception that happens while rendering the included template
and returns an empty string.
.. versionchanged:: 1.9
Template logging now includes the warning logging mentioned above.
.. note::
The :ttag:`include` tag should be considered as an implementation of

View file

@ -596,8 +596,15 @@ Templates
* Added a :meth:`Context.setdefault() <django.template.Context.setdefault>`
method.
* A warning will now be logged for missing context variables. These messages
will be logged to the :ref:`django.template <django-template-logger>` logger.
* The :ref:`django.template <django-template-logger>` logger was added and
includes the following messages:
* A ``DEBUG`` level message for missing context variables.
* A ``WARNING`` level message for uncaught exceptions raised
during the rendering of an ``{% include %}`` when debug mode is off
(helpful since ``{% include %}`` silences the exception and returns an
empty string).
* The :ttag:`firstof` template tag supports storing the output in a variable
using 'as'.