django-filter 撰写过滤后的网址

问题描述 投票:0回答:1
django url django-filter
1个回答
1
投票

使用

?year=2023
不是一个好主意。对于
2023
来说这确实不是问题。但是想象一下 value 本身包含一个问号或 & 符号,那么就会生成像
?keyword=foo&bar&key=bar
这样的查询,因此它会“切断”
&bar

为此,您可以使用

QueryDict
,这基本上就是
request.GET
request.POST

from django.http import QueryDict

qd = QueryDict(mutable=True)
qd['year'] = 2023

return HttpResponseRedirect(f'{reverse('order_list')}?{qd.urlencode()}')

如果值(或键)例如包含&符号或问号,它将百分比编码 [wiki]这些:

>>> qd.urlencode()
'keyword=foo%26bar%3F'
© www.soinside.com 2019 - 2024. All rights reserved.