Opened 16 years ago

Last modified 14 years ago

#5971 closed

django.template.TokenParser inconsistent with parsing filters — at Version 2

Reported by: Dmitri Fedortchenko <zeraien@…> Owned by: nobody
Component: Template system Version: dev
Severity: Keywords: template filter
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Malcolm Tredinnick)

django.template.TokenParser is inconsistent
when parsing filters that follow constant strings or variables.

Meaning that:

{% tag thevar|filter sometag %}

will produce:

self.value() = "thevar|filter"
self.tag() = "sometag"

However:

{% tag "a value"|filter sometag %}

will produce:

self.value() = "a value"
self.tag() = "|filter"
self.tag() = "sometag"

This does not seem like correct behaviour...
I made a very simple patch for this, thus the outcome of the above:

{% tag "a value"|filter sometag %}

will produce:

value = "a value"|filter
tag = sometag

So now we can simply pass the "value" into a FilterExpression to parse the filters...

PS: I had trouble naming an internal method, feel free to complain about the name ;)

Change History (3)

by Dmitri Fedortchenko <zeraien@…>, 16 years ago

Attachment: tokenparser_filter_fix.diff added

The patch

comment:1 by Dmitri Fedortchenko <zeraien@…>, 16 years ago

django.template.TokenParser is inconsistent when parsing filters that follow constant strings or variables.

Meaning that {% tag thevar|filter sometag %} will produce:

self.value() = "thevar|filter"
self.tag() = "sometag"

However {% tag "a value"|filter sometag %} will produce:

self.value() = "a value"
self.tag() = "|filter"
self.tag() = "sometag"

This does not seem like correct behaviour... I made a very simple patch for this, thus the outcome of the above:

{% tag "a value"|filter sometag %} will produce:
self.value() = "a value"|filter
self.tag() = sometag

So now we can simply pass the "value" into a FilterExpression? to parse the filters...

See this thread:
http://groups.google.com/group/django-developers/browse_thread/thread/c90b6e29d20724ca

PS: I should learn to use the preview button.
PPS: The self is from the perspective of the implementee of the TokenParser class.

comment:2 by Malcolm Tredinnick, 16 years ago

Description: modified (diff)
Triage Stage: UnreviewedAccepted

Fixed description formatting.

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