Django URL 参数相互替换
Django URL parameters replace each other
也许我的问题看起来有些简单易懂,但即便如此。
在我的项目中,我使用标准的分页和排序。
问题是它们在 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 }}">«</a>
问题是如何保存之前传输的参数
尝试使用更新当前 request.GET
参数并使用 urllib.urlencode
添加新参数的 Django 模板标签。
创建模板标签:
# 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 %}">«</a>
也许我的问题看起来有些简单易懂,但即便如此。
在我的项目中,我使用标准的分页和排序。
问题是它们在 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 }}">«</a>
问题是如何保存之前传输的参数
尝试使用更新当前 request.GET
参数并使用 urllib.urlencode
添加新参数的 Django 模板标签。
创建模板标签:
# 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 %}">«</a>