#37050: Improve simple_tag / simple_block_tag error message when as is used without
a variable name
-------------------------------------+-------------------------------------
Reporter: shimafallah | Type:
| Cleanup/optimization
Status: new | Component: Template
| system
Version: 6.0 | Severity: Normal
Keywords: | Triage Stage:
| Unreviewed
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------
When using Library.simple_tag() or Library.simple_block_tag(), templates
that end with as but omit the target variable currently raise a generic
argument error. This is valid behavior (it fails), but the message is
unclear for template authors.
**Examples**
{% load custom %}{% one_param 37 as %}
{% load custom %}{% div as %}content{% enddiv %}
Current behavior
A generic TemplateSyntaxError is raised from argument parsing, which does
not clearly explain that the variable name after as is missing.
Expected behavior
Raise a clear, direct error, e.g.:
'one_param' tag requires a variable name after 'as'
'div' tag requires a variable name after 'as'
What this change does
Adds an explicit check in both compile paths (simple_tag and
simple_block_tag) for trailing as without a following variable.
Raises a specific TemplateSyntaxError message before normal argument
parsing.
Tests
Adds 4 regression tests covering invalid trailing as usage:
simple tag without args: {% no_params as %}
simple tag with args: {% one_param 37 as %}
simple block tag without args: {% div as %}...{% enddiv %}
simple block tag with args: {% one_param_block 37 as %}...{%
endone_param_block %}
These tests verify the new explicit error messages.
--
Ticket URL: <
https://code.djangoproject.com/ticket/37050>
Django <
https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.