#37155 new New feature

Allow templatetag `querystring` to start from an empty state

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

Description

The documentation for querystring starts with

Outputs a URL-encoded formatted query string based on the provided parameters.

But the current functionality is mostly limited to taking an existing mapping; modifying that in-place, and *then* rendering that as a querystring. (it defaults to request.GET if no mapping is provided).

When constructing an update for the querystring of the current view; this feels natural. When constructing the querystring of a different view (e.g.: a detail page where an attribute is rendered as a clickable link to some list filtered by that value), the current querystring is not relevant.

Use-case:

Instead of writing

    <a href="{% url 'product_list' %}?vendor={{ vendor.pk|unlocalize}}">{{ vendor.name }}</a>

I would like to be able to write

    <a href="{% url 'product_list' %}{% querystring None vendor=vendor.pk %}">{{ vendor.name }}</a>

(Note; the savings will be a lot better if there is more than 1 querystring parameter)

The change to the querystring would be reasonable minimal; and it would unlock an easier way of writing querystrings in more scenarios than currently available.

A workaround may be to create an empty dictionary, and provide that either via the context or a contextprocessor; but I feel that's less natural than just being able to write 'None' for starting with an empty dictionary.

If accepted; I would be happy to pick up the development.

Change History (0)

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