在我的 Django 项目中,我有一个包含多个表单的页面,它使用
method="GET"
。在此页面上显示了项目列表,用户可以在其中对这些项目的不同页面进行排序、筛选和解析。
例如,如果用户选择第 4 页并将最高价格设置为 10 英镑,我希望 url 看起来像这样:
http://127.0.0.1:8000/trending/?page=4&max_price=10
问题是提交表单时它会覆盖 URL 中先前的 GET 参数
例如
用户选择第4页
http://127.0.0.1:8000/trending/?page=4
然后用户将最高价格设置为 £10
http://127.0.0.1:8000/trending/?max_price=10
这是错误的,因为两个参数应该一起出现在 URL 中。
我想出了一个方法把这些参数的状态保存在里面
request.session
然后使用存储在 request.session
中的值创建一个查询字符串,但我想不出一种方法将查询字符串传递到 URL
def trending(request):
query_string = '&'.join([
f'{param}={request.session.get(param)}'
for param in get_params if request.session.get(param) != None
])
return render(request, "App/trending.html", context=context)
query_string => page=1&max_price=10