Save the code as app_name/templatetags/urlbuilder.py. Supply your view with a dictionary of "default" query params, likely taken from the request. Then, in the template:
`{% load urlbuilder %}
{% url some-url as base_url %}`
That sets you up. Then you can make links. For example:
<th><a href="{% build_url base_url query_params sort=name %}">Name</a></th>
Say query_params has:
page: 2,
filter: active,
sort: id
The above tag would spit out /base/url?page=2&filter=active&sort=name
The tag also has support for using a variable as the replacement key. Say "filter_key" is a variable available to the template with the value "filter":
{% build_url base_url query_params filter_key default %}
Using the above example, that would output /base/url?page=2&filter=default&sort=id
- tag
- templatetag
- url
- parameter
- querystring
- GET
- param