Javascript django修改模板中的请求参数
所以我写了一个应用程序,它返回一个查询结果。假设查询URL是Javascript django修改模板中的请求参数,javascript,ajax,django,django-templates,django-views,Javascript,Ajax,Django,Django Templates,Django Views,所以我写了一个应用程序,它返回一个查询结果。假设查询URL是/query/?A=A&B=B 现在我想在我的结果页面中添加一个“排序依据”按钮,允许用户按时间或类型对结果进行排序。基本上只允许用户访问/query/?A=A&B=B&sorted=time或/query/?A=A&B=B&sorted=type 最简单的方法是在当前URL后追加sorted=。例如,但问题是,如果用户先按时间排序,然后按类型排序,您将有/query/?A=A&B=B&sorted=type&sorted=time 我
/query/?A=A&B=B
现在我想在我的结果页面中添加一个“排序依据”按钮,允许用户按时间或类型对结果进行排序。基本上只允许用户访问/query/?A=A&B=B&sorted=time
或/query/?A=A&B=B&sorted=type
最简单的方法是在当前URL后追加sorted=
。例如,
但问题是,如果用户先按时间排序,然后按类型排序,您将有/query/?A=A&B=B&sorted=type&sorted=time
我想我可以做一些奇特的字符串操作,但我不知道是否可以用django模板语言来做,我想有更好的方法来做。应该有地方我可以修改GET请求,让页面刷新
非常感谢 两个同名的
GET
变量模棱两可。您可以为不同类型的排序定义不同的变量。排序有两个选项,根据上下文升序或降序,您还需要这些值,以便用户可以返回默认排序
/query/?A=a&B=b&sort_type=asc&sort_time=desc
然后,鉴于:
sort_type = request.GET.get('sort_type', '')
sort_time = request.GET.get('sort_time', '')
qs = MyModel.objects.all()
if sort_type:
if sort_type == 'asc':
qs = qs.order_by('type')
elif sort_type == 'desc':
qs = qs.order_by('-type')
# same goes with sort_time
# ...
# pass sort_type and sort_type or all get variables in the context to generate url in template
现在在模板中:
<a href = "{{ request.get_full_path }}?&sort_time={{sort_time}}&sort_type={{sort_type}}">
您可能需要查看(如果您在表中显示此数据,通常只需要查看django-tables2)