一组用于从 url 追加、删除或替换查询字符串参数的工具(最初由 Sophilabs 创建)
项目描述
从 url 中追加、删除或替换查询字符串参数(保留顺序)。最初由 Sophilabs 创建 - https://github.com/sophilabs/django-qurl-templatetag
安装
pip install -e git+https://github.com/obiwanus/django-qurl.git#egg=django-qurl
模板中的使用
例子:
{% 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
参数:
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
在模板标签中使用反向:
{% qurl 'url_name' [reverse_params] | order=name color+=red color+=green %}
Output: /reversed/url/?order=name&color=red&color=green
反向语法与标准 Django {% url %} 标记中的语法完全相同。
视图中的用法
例子:
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'}
笔记:
如果要为参数分配特定值(替换所有现有值),请使用add={'param': 'value'}。
如果您想为已经存在的值添加值,请使用 add={'param': ['value']}。当然,您可以添加多个值。
请检查测试以获取更多使用示例。
运行测试
请确保已安装 tox 并从命令行 运行tox。
源代码托管在 Github:https ://github.com/obiwanus/django-qurl/