我想进行重定向并保留查询字符串。像self.redirect
加上发送的查询参数之类的东西。那可能吗?
问问题
12435 次
4 回答
21
newurl = '/my/new/route?' + urllib.urlencode(self.request.params)
self.redirect(newurl)
于 2012-05-14T19:57:44.063 回答
10
您可以使用 ; 将查询字符串获取到当前请求self.request.query_string
。因此您可以使用 . 重定向到新的 URL self.redirect('/new/url?' + self.request.query_string)
。
于 2012-05-15T04:03:26.623 回答
3
使用RedirectView
.
from django.views.generic.base import RedirectView
path('go-to-django/', RedirectView.as_view(url='https://djangoproject.com', query_string=True), name='go-to-django')
于 2020-10-08T21:38:04.883 回答
2
这在 Django 2.2 中对我有用。查询字符串可用作request.GET
HTTP GET 和request.POST
HTTP POST 的 QueryDict 实例。将这些转换为普通字典,然后使用urlencode
.
from django.utils.http import urlencode
query_string = urlencode(request.GET.dict()) # or request.GET.urlencode()
new_url = '/my/new/route' + '?' + query_string
请参阅https://docs.djangoproject.com/en/2.2/ref/request-response/。
于 2019-10-01T20:09:02.540 回答