#35738: Deprecate double-dot variable lookups
-------------------------------------+-------------------------------------
Reporter: Adam Johnson | Type:
| Cleanup/optimization
Status: new | Component: Template
| system
Version: dev | Severity: Normal
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Currently, a double-dot variable lookup, like `{{ book..title }}`, is
allowed in templates. It maps to a lookup of the empty string before the
next lookup of the named attribute.
Supporting double-dot lookups means that when written accidentally, the
user gets a silent failure, as for a missing variable, rather than a
syntax error. The empty string lookup is unlikely to be used
intentionally.
This behaviour is also inconsistent with Python and Jinja, which both
raise a syntax error.
Let’s deprecated `..` in Django templates, eventually turning it into a
syntax error. We should be able to start by adding the warning in
`Variable.__init__`:
{{{#!diff
--- django/template/base.py
+++ django/template/base.py
@@ -842,6 +842,8 @@ def __init__(self, var):
"not begin with underscores: '%s'" % var
)
self.lookups =
tuple(var.split(VARIABLE_ATTRIBUTE_SEPARATOR))
+ if "" in self.lookups:
+ warnings.warn(...)
def resolve(self, context):
"""Resolve this variable against a given context."""
}}}
The warning message should include the template file and line.
This ticket follows [https://forum.djangoproject.com/t/deprecate-in-
template-variable-lookups/34180 this forum discussion], where Carlton +1'd
me on the concept.
--
Ticket URL: <https://code.djangoproject.com/ticket/35738>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/01070191c4242fed-8b2839b6-a95c-4dec-a910-cacf564cde65-000000%40eu-central-1.amazonses.com.