Django URL参数相互替换

时间:2018-06-21 17:52:14

标签: django django-urls get-request

也许我的问题看起来有些简单和可以理解,但是即使如此。

在我的项目中,我使用标准的分页和排序。

问题在于它们在get请求中彼此替换,例如,我对它们进行了排序,如果我转到第二页,则该集合未排序。我知道原因,而且答案似乎很重要,但即使如此,我仍然找不到。

排序:

<a href="?order_by=counter__service__name_service&sort={{ sort_type }}">Counter</a>

分页示例:

<a class="page-link" href="?page={{ history_application.previous_page_number }}">&laquo;</a>

问题是如何保存先前传输的参数。

1 个答案:

答案 0 :(得分:0)

尝试使用Django模板标签来更新当前的request.GET参数,并使用urllib.urlencode添加新的参数。

创建模板标签:

# templatetags.app_tags

import urllib

@register.simple_tag(takes_context=True)
def url_add_query(context, **kwargs):
    """ Updates the current path from existing GET parameters. """
    request = context.get('request')

    get = request.GET.copy()
    get.update(kwargs)
    return u'{path}?{params}'.format(path=request.path,
                params=urllib.urlencode(get, 'utf-8'))

在您的HTML模板上:

{% load app_tags %}

<a href="{% url_add_query page=history_application.previous_page_number %}">&laquo;</a>