Opened 19 months ago

Last modified 8 weeks ago

#28935 assigned Bug

Template error raised in an {% extends %} child template shows incorrect source location on debug page

Reported by: Matt Westcott Owned by: Ankur Jain
Component: Template system Version: 2.0
Severity: Normal Keywords:
Cc: Preston Timmons, Collin Anderson, pascal chambon Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no


If an error occurs in the processing of a template tag on a template that extends another via {% extends %}, the "Error during template rendering" section of the debug page incorrectly shows an excerpt from the parent template rather than the child.

To reproduce:


{% block body %}{% endblock %}


{% extends "base.html" %}

{% block body %}
    {% include "does_not_exist" %}
{% endblock %}

from django.shortcuts import render

def home(request):
    return render(request, 'home.html')

The resulting error page displays:

Error during template rendering
In template /Users/matthew/Development/tbx/wagtail/debug/brokendebug/core/templates/base.html, error at line 0

1	{% block body %}{% endblock %}

instead of the expected error output:

Error during template rendering
In template /Users/matthew/Development/tbx/wagtail/debug/brokendebug/core/templates/home.html, error at line 4

1	{% extends "base.html" %}
3	{% block body %}
4	    {% include "does_not_exist" %}
5	{% endblock %}

Bisecting shows that this bug was introduced in #27956 (e643ba8bcf0b1da517cbab689ac157ee031202a3), which was a fix for the opposite case: an error occurring on the parent template. (In the above test case, moving the line {% include "does_not_exist" %} to base.html turns it into a test case for #27956, and fails on pre-e643ba8bcf0b1da517cbab689ac157ee031202a3 revisions as expected.)

Change History (7)

comment:1 Changed 19 months ago by Tim Graham

Cc: Preston Timmons added
Component: UncategorizedTemplate system
Triage Stage: UnreviewedAccepted
Type: UncategorizedBug

comment:4 Changed 16 months ago by Collin Anderson

Cc: Collin Anderson added

comment:5 Changed 13 months ago by Ankur Jain

Owner: set to Ankur Jain
Status: newassigned

comment:6 Changed 13 months ago by Ankur Jain

When the parser runs then it appends all the child template nodes to the parent template nodes and hence when template not found error comes then it's reported from the parent html instead of the child html.

comment:7 Changed 11 months ago by Simon Charette

#29740 was a duplicate.

comment:8 in reply to:  6 Changed 4 months ago by Michael F. Lamb

Replying to Ankur Jain:
Hi, I'm interested in working on this bug. Are you still working on it, Ankur?

comment:9 Changed 8 weeks ago by pascal chambon

Cc: pascal chambon added

Error confirmed on Django2.2.1, it makes the debug page much less helpful in case of TemplateError, since most websites inherit their templates from some kind of "base.html" skeleton.

Note: See TracTickets for help on using tickets.
Back to Top