Opened 9 years ago
Closed 6 months ago
#28050 closed New feature (fixed)
TemplateSyntaxError should contain template name
| Reported by: | Petr Dlouhý | Owned by: | Farhan Ali |
|---|---|---|---|
| Component: | Template system | Version: | 1.11 |
| Severity: | Normal | Keywords: | TemplateSyntaxError template |
| Cc: | Roger Masse, Emmanuel Katchy, Farhan Ali | Triage Stage: | Ready for checkin |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| 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 (23)
comment:1 by , 9 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|
comment:2 by , 9 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 , 8 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 , 8 years ago
| Patch needs improvement: | unset |
|---|
comment:7 by , 8 years ago
| Has patch: | unset |
|---|
comment:9 by , 8 years ago
| Cc: | added |
|---|
comment:11 by , 8 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 , 8 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 , 8 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 , 2 years ago
| Owner: | changed from to |
|---|
comment:16 by , 15 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 , 15 months ago
| Cc: | added |
|---|
comment:18 by , 7 months ago
| Owner: | changed from to |
|---|
comment:19 by , 7 months ago
| Cc: | added |
|---|---|
| Patch needs improvement: | unset |
comment:20 by , 7 months ago
| Needs tests: | unset |
|---|
comment:21 by , 6 months ago
| Needs tests: | set |
|---|
comment:22 by , 6 months ago
| Needs tests: | unset |
|---|---|
| Triage Stage: | Accepted → Ready for checkin |
PR