Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript django修改模板中的请求参数_Javascript_Ajax_Django_Django Templates_Django Views - Fatal编程技术网

Javascript django修改模板中的请求参数

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 我

所以我写了一个应用程序,它返回一个查询结果。假设查询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

我想我可以做一些奇特的字符串操作,但我不知道是否可以用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)