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

发布于 2024-11-30 00:48:42 字数 439 浏览 1 评论 0原文

假设我有一个类似的网址

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>

诸如此类...

Suppose i have an url like

www.mysite.com/?param_1=val_1¶m_2=val_2

and in my template, i have a list of link corresponding to those parameters.

How can i grab this url and add or modify the parameters, so i don't have to submit the get request everytime, but just pass the new url?

Example:

<a href="www.mysite.com/?param_1=val_1¶m_2=val_2_modified">val_2_modified</a>
<a href="www.mysite.com/?param_1=val_1¶m_2=val_2¶m_3=new_val">new_val</a>

and so on...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我ぃ本無心為│何有愛 2024-12-07 00:48:42

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

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'})

To use this in templates just write template tag (I already forgot how to write template tags for django).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文