Передача переменной в перенаправление в Django

Я пытаюсь передать переменную с помощью функции перенаправления, но она не возвращает ни одного.

def one:
    # define location variable here
    return redirect(getting_started_info, location=location)

def getting_started_info(request, location=''):
    location = location
    ...

Может кто-нибудь рассказать мне, почему переменная в перенаправлении не проходит?

Ответ 1

return HttpResponseRedirect(reverse('getting_started_info', kwargs={'location': location}))

Ответ 2

Помните, что 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-адрес, который будет использоваться как-для местоположения перенаправления.

Ответ 3

вы также можете передать значение некоторой переменной с помощью сеансов или файла cookie.