Skip to main content

Append, remove or replace query string parameters from a url (preserve order). Originally created by Sophilabs - https://github.com/sophilabs/django-qurl-templatetag

Installation

pip install -e git+https://github.com/obiwanus/django-qurl.git#egg=django-qurl

Usage in templates

Example:

{% load qurl %}

{% qurl '/search?page=1&color=blue&color=green' order=name page-- color+=red color-=green %}
Output: /search?color=blue&order=name&color=red

{% qurl request.get_full_path order='name' %}
Output: /your/current/path/?order=name

Parameters:

name=value: replace all values of name by one value
name--: remove all values of name
name+=value: append a new value for name
name-=value: remove the value of name with the value

Using reverse in the template tag:

{% qurl 'url_name' [reverse_params] | order=name color+=red color+=green %}
Output: /reversed/url/?order=name&color=red&color=green

The reverse syntax is exactly the same as in the standard Django {% url %} tag.

Usage in views

Examples:

from qurl import qurl

url = '/testurl/1/'
qurl(url, add={'a': 'a1', 'b': ['b1', 'b2']})
# Output: /testurl/1/?a=a1&b=b1&b=b2

url = '/testurl/1/?a=a1&b=b1&b=b2'
qurl(url, add={'a': 'a2'}, remove=['b'])
# Output: /testurl/1/?a=a2

url = '/testurl/1/?a=a1&b=b1&b=b2'
qurl(url, add={'a': ['a2']}, remove=['b'])
# Output: /testurl/1/?a=a1&a=a2

url = '/testurl/1/?a=a1&b=b1&b=b2'
qurl(url, exclude={'b': 'b2'}, add={'a': 'a2'})
# Output: /testurl/1/?a=a1&a=a2&b=b1

# You can use request.GET as a base
url = '/testurl/1/'
qurl(url, add=request.GET, exclude={'b': 'b1'}

Notes:

If you want to assign a specific value to the parameter (replacing all existing values), use add={'param': 'value'}.

If you want to add a value to already existing ones, use add={'param': ['value']}. You can add more than one value of course.

Please check the tests for more usage examples.

Running tests

Please make sure tox is installed and run tox from the command line.

The source code is hosted on Github: https://github.com/obiwanus/django-qurl/

Release files for django-qurl 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-qurl 0.1.1
File Size Uploaded
django-qurl-0.1.1.tar.gz 3.8 kB Details

Release files / django-qurl-0.1.1.tar.gz

Download URL django-qurl-0.1.1.tar.gz
Size 3.8 kB
Tags Source
SHA-256 checksum
How to use checksums
2f1a1b8b3a212240e3a028a34653b738d2caecacca095e5a875e603dd3f8a290
BLAKE2b-256 checksum
How to use checksums
4180b1c163a481914c08b34838545c0c62828e742500383755083407bdf0c44c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.1 This release

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page