使用
?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'