Django: получить текущие параметры GET в URL и изменить один (или несколько) из них - PullRequest
2 голосов
/ 17 августа 2011

Предположим, у меня есть URL, как

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>

и так далее ...

1 Ответ

4 голосов
/ 17 августа 2011

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

...