【问题标题】:Django: grab current GET parameters in url and modify one (or many) of themDjango:在 url 中获取当前 GET 参数并修改其中一个(或多个)
【发布时间】:2011-08-17 09:21:46
【问题描述】:

假设我有一个类似的网址

www.mysite.com/?param_1=val_1&param_2=val_2

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

如何抓取这个url并添加或修改参数,这样我就不必每次都提交get请求,而只需传递新的url?

例子:

<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>

等等……

【问题讨论】:

    标签: django url get params


    【解决方案1】:

    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 编写模板标签了)。

    【讨论】:

    猜你喜欢
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 2016-06-25
    • 2017-01-22
    相关资源
    最近更新 更多