Spec-Zone.ru › Django 1.11

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

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 с идентификатором сайта, соответствующим параметру 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/1.11/ref/contrib/redirects/

Spec-Zone.ru

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