Ответ 1
return HttpResponseRedirect(reverse('getting_started_info', kwargs={'location': location}))
Я пытаюсь передать переменную с помощью функции перенаправления, но она не возвращает ни одного.
def one:
# define location variable here
return redirect(getting_started_info, location=location)
def getting_started_info(request, location=''):
location = location
...
Может кто-нибудь рассказать мне, почему переменная в перенаправлении не проходит?
return HttpResponseRedirect(reverse('getting_started_info', kwargs={'location': location}))
Помните, что redirect()
не выполняет прямой вызов вашего представления, он фактически отправляет браузеру клиента статус 302 Found
(301 Moved Permanently
, если вы используете permanent=True
), с инструкцией перенаправления на другой URL-адрес, В этом случае этот URL-адрес соответствует разрешению getting_started_info
.
Я считаю, что для этого нужно создать urlconf, который сопоставляется с getting_started_view
и который использует его позиционный аргумент location
. Это скорее всего произойдет через named groups.
Из django 1.8 docs запись в redirect()
:
Аргументы могут быть:
- Модель: будут вызываться функции get_absolute_url().
- Имя вида, возможно с аргументами: urlresolvers.reverse будет использоваться для реверсирования имени.
- Абсолютный или относительный URL-адрес, который будет использоваться как-для местоположения перенаправления.
вы также можете передать значение некоторой переменной с помощью сеансов или файла cookie.