Skip to content

A set of tools to append, remove or replace query string parameters from a url (originally created by Sophilabs)

License

Notifications You must be signed in to change notification settings

obiwanus/django-qurl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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/

About

A set of tools to append, remove or replace query string parameters from a url (originally created by Sophilabs)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages