Currently this is only feasible by attaching data to the `origin` object,
since that's the only object available to both the template and the
parser, but this isn't pretty.
I propose adding an additional attribute to the `Parser` that can be used
by template tag authors to have extra data set on the template instance,
that can then be used as needed.
This ticket comes from the forum discussion on
[https://forum.djangoproject.com/t/adding-template-fragments-or-partials-
for-the-dtl/21500 Adding template fragments or partials for the DTL] — it
is the necessary minimal first change to allow an official[*] API such
that a library such as `django-template-partials` can pass named node
lists out of the parser for later use. (I'd imagine it would be useful to
other tag library authors once in play.)
[*]: I say official, but I'm not sure whether to make this public — i.e.
documented — it's pretty niche — those who need it'll find it. I'd be
happy with a regression test making sure it didn't break but leaving it
undocumented beyond that. Opinions welcome. 🙂
--
Ticket URL: <https://code.djangoproject.com/ticket/34883>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
Comment (by Carlton Gibson):
[https://github.com/django/django/pull/17325 PR]
--
Ticket URL: <https://code.djangoproject.com/ticket/34883#comment:1>
* has_patch: 0 => 1
--
Ticket URL: <https://code.djangoproject.com/ticket/34883#comment:2>
* owner: nobody => Carlton Gibson
--
Ticket URL: <https://code.djangoproject.com/ticket/34883#comment:3>
* stage: Unreviewed => Accepted
Comment:
Seems reasonable.
--
Ticket URL: <https://code.djangoproject.com/ticket/34883#comment:4>
* stage: Accepted => Ready for checkin
--
Ticket URL: <https://code.djangoproject.com/ticket/34883#comment:5>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"35bbb2c9c01882b1d77b0b8c737ac646144833d4" 35bbb2c]:
{{{
#!CommitTicketReference repository=""
revision="35bbb2c9c01882b1d77b0b8c737ac646144833d4"
Fixed #34883 -- Allowed template tags to set extra data on templates.
By setting a value in the `parser.extra_data` mapping, template tags
pass additional data out of the parsing context.
Any extra data set is exposed on the template via the matching
`.extra_data` attribute.
Library authors should use a key to namespace extra data. The 'django'
namespace is reserved for internal use.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/34883#comment:6>