Переадресация 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 е., ил.
Похожие посты:
- Получение больших наборов данных (0)
- Анализ большого набора данных (0)
- Пример: выявление тенденций (0)
- Создание таксономии запросов (0)
- Завершение углубленного анализа востребованности поисковых запросов (0)
- Как избежать неинформативности (0)
- «Любовь» поисковой системы Google ограничивается вашим доменом (0)