Я хочу сделать перенаправление и сохранить строку запроса. Что-то вроде self.redirect
плюс параметры запроса, которые были отправлены. Возможно ли это?
Как сделать перенаправление и сохранить строку запроса?
Ответ 1
newurl = '/my/new/route?' + urllib.urlencode(self.request.params)
self.redirect(newurl)
Ответ 2
Вы можете получить строку запроса для текущего запроса с помощью self.request.query_string
; таким образом, вы можете перенаправить на новый URL-адрес с помощью self.redirect('/new/url?' + self.request.query_string)
.
Ответ 3
Это сработало для меня в Django 2.2. Строка запроса доступна в виде экземпляра QueryDict request.GET
для HTTP GET и request.POST
для HTTP POST. Преобразуйте их в обычные словари, а затем используйте 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/.