Класс HttpResponseRedirect
Класс HttpResponseRedirect применяется для создания HTTP-ответа с кодом статуса 302. Он принимает один обязательный аргумент - URL, на который следует перенаправить пользователя. URL может быть абсолютным или относительным. В большинстве случаев для формирования URL удобно использовать функцию reverse.
Синтаксис
from django.http import HttpResponseRedirect
HttpResponseRedirect(redirect_to)
Параметр redirect_to может содержать полный URL, относительный путь или именованный маршрут, преобразованный функцией reverse.
Пример . С относительным URL
Рассмотрим простой пример перенаправления на главную страницу сайта:
from django.http import HttpResponseRedirect
def home_redirect_view(request):
return HttpResponseRedirect('/')
Пример . С функцией reverse
Более правильный подход - использование функции reverse для получения URL по имени маршрута:
from django.http import HttpResponseRedirect
from django.urls import reverse
def login_success_view(request):
return HttpResponseRedirect(reverse('profile'))
Пример . С динамическими параметрами
Если URL содержит динамические параметры, их можно передать в функцию reverse:
from django.http import HttpResponseRedirect
from django.urls import reverse
def article_edit_view(request, article_id):
return HttpResponseRedirect(
reverse('article-detail', args=[article_id])
)
Пример . С аргументами в виде словаря
Параметры можно передавать также в виде именованных аргументов:
from django.http import HttpResponseRedirect
from django.urls import reverse
def category_view(request, category_slug):
return HttpResponseRedirect(
reverse('post-list', kwargs={'slug': category_slug})
)
Пример . С абсолютным URL
Класс может принимать и полный URL-адрес для перенаправления на внешний ресурс:
from django.http import HttpResponseRedirect
def external_redirect_view(request):
return HttpResponseRedirect('https://example.com')
Смотрите также
-
функция
redirect,
которая является удобной оберткой над классомHttpResponseRedirect -
класс
HttpResponsePermanentRedirect,
который возвращает код статуса 301 для постоянного перенаправления -
класс
HttpResponse,
который является базовым классом для всех HTTP-ответов -
функция
reverse,
которая используется для преобразования именованных маршрутов в URL-адреса