Ответ
Функция redirect
из модуля django.shortcuts
— это основной способ выполнить HTTP-перенаправление (редирект) в Django.
Она принимает различные аргументы (URL-путь, имя маршрута, объект модели) и возвращает экземпляр класса HttpResponseRedirect
, который браузер интерпретирует как команду для перехода на новую страницу.
Основные способы использования:
- По имени URL-маршрута (рекомендуется): Наиболее надежный способ, так как он не зависит от конкретного URL-пути.
- По абсолютному или относительному пути: Прямое указание URL, например
/articles/
. - По объекту модели: Если у модели определен метод
get_absolute_url()
, Django автоматически использует его для определения URL для редиректа.
Пример:
from django.shortcuts import redirect
from .models import Article
def my_view(request):
# 1. Рекомендуемый способ: по имени URL из urls.py
return redirect('articles:list')
# 2. Альтернатива: по абсолютному пути
# return redirect('/articles/')
# 3. Перенаправление на страницу конкретного объекта
# article = Article.objects.get(pk=1)
# return redirect(article) # Требует наличия метода get_absolute_url() в модели
Временный (302) vs. Постоянный (301) редирект
По умолчанию redirect
выполняет временное перенаправление (HTTP-статус 302). Чтобы сделать его постоянным (статус 301), что важно для SEO, используйте параметр permanent=True
:
return redirect('articles:list', permanent=True)