Spec-Zone.ru › Django 2.2

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

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, вы увидите раздел «Перенаправления» на главной странице администратора. Редактируйте перенаправления так же, как и любой другой объект в системе.

Через Python API

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.2/ref/contrib/redirects/

Spec-Zone.ru

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