Opened 8 years ago
Last modified 5 months ago
#28050 assigned New feature
TemplateSyntaxError should contain template name
Reported by: | Petr Dlouhý | Owned by: | Tim McCurrach |
---|---|---|---|
Component: | Template system | Version: | 1.11 |
Severity: | Normal | Keywords: | TemplateSyntaxError template |
Cc: | Roger Masse, Emmanuel Katchy | Triage Stage: | Accepted |
Has patch: | yes | Needs documentation: | no |
Needs tests: | yes | Patch needs improvement: | yes |
Easy pickings: | no | UI/UX: | no |
Description
If there is an error in template, Django doesn't report the template name. It could be quite uneasy to find the buggy template in such case.
e.g.: I have got following error:
File "/home/petr/soubory/programovani/Auto-mat/DPNK/dpnk/env/lib/python3.5/site-packages/django/template/base.py", line 509, in parse self.invalid_block_tag(token, command, parse_until) File "/home/petr/soubory/programovani/Auto-mat/DPNK/dpnk/env/lib/python3.5/site-packages/django/template/base.py", line 565, in invalid_block_tag get_text_list(["'%s'" % p for p in parse_until], 'or'), django.template.exceptions.TemplateSyntaxError: Invalid block tag on line 127: 'endblock', expected 'empty' or 'endthumbnail'. Did you forget to register or load this tag?
It contains even line number, but I have no idea in which file.
I think, it is not that difficult to include template name in the bug report. In my case I tried to debug the error call. In django.template.base
, the invalidb_block_tag
is called from parse()
where the template name can be obtained from self.origin.template_name
.
Change History (17)
comment:1 by , 8 years ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:2 by , 8 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:4 by , 8 years ago
Patch needs improvement: | set |
---|
I'm not particularly pleased with the current patch which causes the template name to be displayed redundantly several times in the debug view. Hopefully we could avoid that.
comment:5 by , 7 years ago
Owner: | changed from | to
---|
My plan is to improve the patch as described in the pull request with the suggestion by timgraham:
There might be a possibility for the debug view to modify TemplateDoesNotExist's message so the redundant template names aren't added. In any case, a test is required.
comment:6 by , 7 years ago
Patch needs improvement: | unset |
---|
comment:7 by , 7 years ago
Has patch: | unset |
---|
comment:8 by , 7 years ago
Has patch: | set |
---|
comment:9 by , 7 years ago
Cc: | added |
---|
comment:11 by , 7 years ago
Has patch: | unset |
---|
The original pull request was closed by the author, and there's another branch open that doesn't have a pull request yet (and I think still needs some rebasing / squashing?)
If anyone thinks there's a clean patch available for this please post a fresh link to it.
comment:12 by , 7 years ago
Has patch: | set |
---|---|
Patch needs improvement: | set |
There's PR 8974 but I'm still not convinced it's ideal.
comment:13 by , 7 years ago
I think that in case of Template Syntax Error it is very unhelpful to show the python traceback because that will be usually same for all the errors of this kind and as mentioned in the ticket does not show the template file path where the error has been encountered. So my solution is to catch the template syntax error exception and instead of going for default python exception handling mechanism, we actually display the template path, template line number and the exception message which I believe will be more useful than the default python traceback in debugging template errors.
I would like to work on this and want to know your views about my approach.
follow-up: 16 comment:14 by , 19 months ago
Owner: | changed from | to
---|
comment:16 by , 5 months ago
Replying to Tim McCurrach:
Hi Tim, are you still free to work on this?
It appears the PR only needs tests to get accepted.
comment:17 by , 5 months ago
Cc: | added |
---|
PR