Opened 2 hours ago

#36728 assigned Cleanup/optimization

Validate template tag context argument at definition time, rather than compile time

Reported by: Jake Howard Owned by: Jake Howard
Component: Template system Version: dev
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

If a template tag is defined incorrectly, by not accepting a context argument with takes_context=True:

@register.simple_tag(takes_context=True)
def my_tag():
    pass

An error is only raised when the template is compiled, rather than when the tag is defined as someone may expect. This means there’s extra work done at compile time, which is duplicated each time the tag is used, across multiple templates.

Moving this validation to be done at definition time would likely improve performance. Reading the function signature is already done at definition time, so the performance improvement will likely only be checking the list of arguments, but reporting the error earlier would probably also be a DX improvement.

See also forum thread.

Change History (0)

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