Django:在url中获取当前的GET参数并修改其中的一个(或多个)

时间:2011-08-17 09:21:46

标签: django url get params

假设我有一个像

这样的网址
www.mysite.com/?param_1=val_1&param_2=val_2

在我的模板中,我有一个与这些参数对应的链接列表。

我如何获取此网址并添加或修改参数,因此我不必每次都提交获取请求,只是传递新网址?

示例:

<a href="www.mysite.com/?param_1=val_1&param_2=val_2_modified">val_2_modified</a>
<a href="www.mysite.com/?param_1=val_1&param_2=val_2&param_3=new_val">new_val</a>

依旧......

1 个答案:

答案 0 :(得分:4)

https://code.djangoproject.com/browser/django/trunk/django/contrib/admin/views/main.py#L152

from django.utils.http import urlencode

def get_query_string(params, new_params=None, remove=None):
    if new_params is None: new_params = {}
    if remove is None: remove = []
    p = params.copy()
    for r in remove:
        for k in p.keys():
            if k.startswith(r):
                del p[k]
    for k, v in new_params.items():
        if v is None:
            if k in p:
                del p[k]
        else:
            p[k] = v
    return '?%s' % urlencode(p)

# get_query_string(dict(request.GET.items()), {'param_2': 'val_2_modified', 'param_3': 'new_val'})

要在模板中使用它,只需编写模板标签(我已经忘记了如何为django编写模板标签)。