Opened 94 minutes ago
#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.