Django ulr不接受查询字符串



我在Django中有一个视图,它使用可选的查询字符串将用户重定向到某个url:

return redirect('search/?print_id='+str(pk))

在我的urls.py中,url模式如下:

path('search/', views.search, name='search'),

问题是当Django试图重定向时,我会得到以下错误:

Reverse for 'search/?print_id=36' not found. 'search/?print_id=36' is not a valid view function or pattern name.

如何修改url模式以接受查询字符串?

redirect将尝试查找具有该名称的视图。您应该使用:

from django.http import HttpResponseRedirect, QueryDict
from django.urls import reverse
# …
qd = QueryDict(mutable=True)
qd['print_id'] = pk
return HttpResponseRedirect(f"{reverse('search')}?{qd.urlencode()}")

最新更新