Spec-Zone.ru › Django 2.1

Приложение перенаправлений

Django поставляется с необязательным приложением перенаправлений. Оно позволяет хранить простые перенаправления в базе данных и обрабатывает перенаправление за вас. Оно использует код состояния HTTP-ответа 301 Moved Permanently по умолчанию.

Установка

Чтобы установить приложение перенаправлений, выполните следующие шаги:

  1. Убедитесь, что фреймворк django.contrib.sites установлен.
  2. Добавьте 'django.contrib.redirects' в свой параметр INSTALLED_APPS.
  3. Добавьте 'django.contrib.redirects.middleware.RedirectFallbackMiddleware' в свой параметр MIDDLEWARE.
  4. Выполните команду manage.py migrate.

Как это работает

manage.py migrate создает таблицу django_redirect в вашей базе данных. Это простая справочная таблица с полями site_id, old_path и new_path.

Средство RedirectFallbackMiddleware выполняет всю работу. Каждый раз, когда любое приложение Django поднимает ошибку 404, это средство обращается к базе данных перенаправлений, чтобы найти запрашиваемый URL в качестве последнего средства. Точнее, оно проверяет перенаправление с заданным old_path со значением ID сайта, соответствующим настройке SITE_ID.

  • Если найдено совпадение, и new_path не пусто, то происходит перенаправление на new_path с использованием перенаправления 301 («Перемещено постоянно»). Вы можете создать подкласс RedirectFallbackMiddleware и установить response_redirect_class на django.http.HttpResponseRedirect, чтобы использовать вместо этого перенаправление 302 Moved Temporarily.
  • Если найдено совпадение, и new_path пусто, то отправляется HTTP-заголовок 410 («Удалён») и пустой (без содержимого) ответ.
  • Если совпадение не найдено, запрос продолжает обрабатываться как обычно.

Средство активируется только для ошибок 404 — не для 500 и ответов с другими кодами состояния.

Обратите внимание, что порядок MIDDLEWARE имеет значение. Обычно вы можете поместить RedirectFallbackMiddleware в конец списка, так как это крайняя мера.

Подробнее о средствах см. в документации по средствам.

Как добавить, изменить и удалить перенаправления

Через интерфейс администрирования

Если вы активировали автоматический интерфейс администрирования Django, вы увидите раздел «Перенаправления» на главной странице администрирования. Редактируйте перенаправления так же, как и любые другие объекты в системе.

Через API Python

class models.Redirect

Перенаправления представлены стандартной моделью Django, которая находится в django/contrib/redirects/models.py. Вы можете получить доступ к объектам перенаправлений через API базы данных Django.

Средства

class middleware.RedirectFallbackMiddleware

Вы можете изменить используемые средства HttpResponse класса, создав подкласс RedirectFallbackMiddleware и переопределив response_gone_class и/или response_redirect_class.

response_gone_class

Класс HttpResponse, используемый, когда Redirect не найден для запрашиваемого пути или имеет пустое значение new_path.

По умолчанию это HttpResponseGone.

response_redirect_class

Класс HttpResponse, который обрабатывает перенаправление.

По умолчанию это HttpResponsePermanentRedirect.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/2.1/ref/contrib/redirects/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API