[Django] #34883: Allow template tags to set extra data on templates.

10 views
Skip to first unread message

Django

unread,
Sep 29, 2023, 1:37:55 PM9/29/23
to django-...@googlegroups.com
#34883: Allow template tags to set extra data on templates.
-------------------------------------------+--------------------------
Reporter: Carlton Gibson | Owner: nobody
Type: New feature | Status: assigned
Component: Template system | Version: 5.0
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 |
-------------------------------------------+--------------------------
Custom template tags may need to pass additional data, beyond the node
list, out of the parsing context, for later use, by (e.g.) the template
loader, or other template clients.

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.

Django

unread,
Sep 29, 2023, 1:41:43 PM9/29/23
to django-...@googlegroups.com
#34883: Allow template tags to set extra data on templates.
---------------------------------+--------------------------------------

Reporter: Carlton Gibson | Owner: nobody
Type: New feature | Status: assigned
Component: Template system | Version: 5.0
Severity: Normal | Resolution:

Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
---------------------------------+--------------------------------------

Comment (by Carlton Gibson):

[https://github.com/django/django/pull/17325 PR]

--
Ticket URL: <https://code.djangoproject.com/ticket/34883#comment:1>

Django

unread,
Sep 29, 2023, 1:41:51 PM9/29/23
to django-...@googlegroups.com
#34883: Allow template tags to set extra data on templates.
---------------------------------+--------------------------------------
Reporter: Carlton Gibson | Owner: nobody
Type: New feature | Status: assigned
Component: Template system | Version: 5.0
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
---------------------------------+--------------------------------------
Changes (by Carlton Gibson):

* has_patch: 0 => 1


--
Ticket URL: <https://code.djangoproject.com/ticket/34883#comment:2>

Django

unread,
Sep 29, 2023, 1:53:33 PM9/29/23
to django-...@googlegroups.com
#34883: Allow template tags to set extra data on templates.
-------------------------------------+-------------------------------------
Reporter: Carlton Gibson | Owner: Carlton
| Gibson

Type: New feature | Status: assigned
Component: Template system | Version: 5.0
Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Unreviewed
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Carlton Gibson):

* owner: nobody => Carlton Gibson


--
Ticket URL: <https://code.djangoproject.com/ticket/34883#comment:3>

Django

unread,
Sep 29, 2023, 2:21:32 PM9/29/23
to django-...@googlegroups.com
#34883: Allow template tags to set extra data on templates.
-------------------------------------+-------------------------------------
Reporter: Carlton Gibson | Owner: Carlton
| Gibson
Type: New feature | Status: assigned
Component: Template system | Version: 5.0
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted

Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Mariusz Felisiak):

* stage: Unreviewed => Accepted


Comment:

Seems reasonable.

--
Ticket URL: <https://code.djangoproject.com/ticket/34883#comment:4>

Django

unread,
Oct 2, 2023, 9:37:44 AM10/2/23
to django-...@googlegroups.com
#34883: Allow template tags to set extra data on templates.
-------------------------------------+-------------------------------------
Reporter: Carlton Gibson | Owner: Carlton
| Gibson
Type: New feature | Status: assigned
Component: Template system | Version: 5.0
Severity: Normal | Resolution:
Keywords: | Triage Stage: Ready for
| checkin

Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Mariusz Felisiak):

* stage: Accepted => Ready for checkin


--
Ticket URL: <https://code.djangoproject.com/ticket/34883#comment:5>

Django

unread,
Oct 2, 2023, 10:47:52 AM10/2/23
to django-...@googlegroups.com
#34883: Allow template tags to set extra data on templates.
-------------------------------------+-------------------------------------
Reporter: Carlton Gibson | Owner: Carlton
| Gibson
Type: New feature | Status: closed

Component: Template system | Version: 5.0
Severity: Normal | Resolution: fixed

Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Mariusz Felisiak <felisiak.mariusz@…>):

* 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>

Reply all
Reply to author
Forward
0 new messages