Spec-Zone.ru › Django 3.0

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

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, этот middleware проверяет базу данных перенаправлений в качестве последнего средства. В частности, он ищет перенаправление с заданным old_path и идентификатором сайта, соответствующим значению настройки SITE_ID.

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

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

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

Дополнительную информацию о middleware можно найти в документации по middleware.

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

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

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

Через API Python

class models.Redirect

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

Middleware

class middleware.RedirectFallbackMiddleware

Вы можете изменить используемые middleware классы 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/3.0/ref/contrib/redirects/

Spec-Zone.ru

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