Класс RedirectView
Класс RedirectView применяется для обработки запросов,
которые должны быть перенаправлены на другой URL. В зависимости
от настроек, перенаправление может быть временным (код 302)
или постоянным (код 301). Класс позволяет задавать целевой URL
как статически, так и динамически, используя параметры из
запроса или регулярные выражения.
Основные атрибуты класса: url - целевой URL для
перенаправления, permanent - флаг постоянного
перенаправления, query_string - сохранять ли строку
запроса при перенаправлении.
Синтаксис
from django.views.generic.base import RedirectView
class MyRedirectView(RedirectView):
url = "/new-url/"
permanent = True
query_string = False
Пример
Давайте создадим простое перенаправление с одного адреса на другой:
from django.views.generic.base import RedirectView
from django.urls import path
class HomeRedirectView(RedirectView):
url = "/new-home/"
urlpatterns = [
path("old-home/", HomeRedirectView.as_view(), name="old-home"),
]
Результат выполнения кода:
"Redirecting to /new-home/"
Пример
Давайте используем параметры из URL для динамического перенаправления:
from django.views.generic.base import RedirectView
from django.urls import path
class DynamicRedirectView(RedirectView):
url = "/new-section/%(section)s/"
urlpatterns = [
path("old-section/<str:section>/", DynamicRedirectView.as_view(), name="old-section"),
]
Результат выполнения кода:
"Redirecting to /new-section/news/"
Пример
Давайте создадим постоянное перенаправление с сохранением строки запроса:
from django.views.generic.base import RedirectView
from django.urls import path
class PermanentRedirectView(RedirectView):
url = "/new-page/"
permanent = True
query_string = True
urlpatterns = [
path("old-page/", PermanentRedirectView.as_view(), name="old-page"),
]
Результат выполнения кода:
"Redirecting permanently to /new-page/?param=value"