Переадресация Django

Опубликовал: Wednesday, February 15, 2024 в категории Django | Пока нет комментариев

Подсистема переадресации в Django позволяет управлять переадресацией, сохраняя необходимую информацию в базе данных в виде обычных объектов модели. Например, можно сказать фреймворку Django: «Переадресуй любой запрос к /music/ на /sections/arts/music/». Это удобно, когда требуется изменить структуру сайта: веб-разработчик обязан принимать все меры к тому, чтобы не было «битых» ссылок.

Использование подсистемы переадресации

Для установки приложения выполните следующие действия:

1.         Добавьте в параметр INSTALLED_APPS строку ‘django.contrib. redirects’.

2.     Затем в параметр MIDDLEWARE_CLASSES добавьте строку ‘django.contrib. redirects, middleware. RedirectFallbackMiddleware’.

3.     Выполните команду manage, ру syncdb, которая создаст необходимую таблицу в базе данных.

Команда manage.ру syncdb создаст в базе данных таблицу django_redirect, содержащую поля site_id, old_path и new_path.

Создавать объекты переадресации можно как в административном интерфейсе, так и с помощью API доступа к базе данных. Дополнительные сведения см. в разделе «Добавление, изменение и удаление объектов переадресации».

После создания всех объектов переадресации всю остальную работу берет на себя дополнительный процессор RedirectFallbackMiddleware. Всякий раз когда Django пытается отправить ответ с кодом 404, этот процессор отыскивает в базе данных объект переадресации с указанным URL в поле old_path со значением в поле site_id, которое указано в параметре SITE_ID. (О параметре SITE_ID и подсистеме сайтов см. раздел «Сайты» выше.) Далее выполняются следующие действия:

1.     Если найденная запись содержит непустое поле new_path, то производится переадресация на URL new_path.

2.     Если найденная запись содержит пустое поле new_path, то отправляется ответ с кодом 410 («Gone») и пустым содержимым.

3.          Если запись не найдена, запрос обрабатывается как обычно.

Примечание —————————————————————————-

Этот дополнительный процессор подключается только для обработки ошибки 404 (страница не найдена) - он не используется для обработки ошибки 500 (ошибка сервера) и прочих. Отметим также, что порядок следования строк в списке MIDDLEWARE_CLASSES имеет значение. Вообще говоря, процессор RedirectFallbackMiddleware лучше помещать как можно ближе к концу списка, так как это последнее средство.

Примечание —————————————————————————

Если вы одновременно используете переадресацию и плоские страницы, подумайте, что следует проверять раньше. Мы рекомендуем сначала проверять плоские страницы, а потом переадресацию (то есть располагать процессор FlatpageFallbackMiddleware в списке раньше, чем RedirectFallbackMiddleware), но у вас может быть иное мнение.

Добавление, изменение и удаление объектов переадресации

Добавлять, изменять и удалять объекты переадресации можно двумя способами.

С помощью административного интерфейса

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

С помощью Python API

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

»> from django.contrib.redirects.models import Redirect »> from django.contrib.sites.models import Site »> red = Redirect, objects. create( site=Site.objects.get(id=1), old_path=’/music/’, new_path=’/sections/arts/music/’,

• •• )*

»> Redirect.objects.get(old_path=’/music/’ ) <Redirect: /music/ —> /sections/arts/music/>

Источник: Головатый А., Каплан-Мосс Дж. Django. Подробное руководство, 2-е издание. - Пер. с англ. - СПб.: Символ- Плюс, 2010. - 560 е., ил.

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *