19

我想进行重定向并保留查询字符串。像self.redirect加上发送的查询参数之类的东西。那可能吗?

4

4 回答 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.GETHTTP GET 和request.POSTHTTP 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 回答