Главная | Архив новостей | Общение | Площадка | Примеры OpenID
Хостинг Django от «Джино»
Оглавление

Перенаправления

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

Использование

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

  1. Добавьте django.contrib.redirects в параметр конфигурации INSTALLED_APPS.

  2. Добавьте django.contrib.redirects.middleware.RedirectFallbackMiddleware в параметр конфигурации MIDDLEWARE_CLASSES.

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

Команда manage.py syncdb создаёт таблицу django_redirect в вашей базе данных. Это простая таблица с полями site_id, old_path и new_path.

Вы можете создавать перенаправления как через интерфейс администратора Django, так и через API для работы с базой данных. Подробности описаны в разделе «Добавление, изменение и удаление».

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

  • Если найдено совпадение и поле new_path содержит что-нибудь, то производится перенаправление по пути из поля new_path.

  • Если найдено совпадение, а поле new_path не содержит ничего, производится отправка заголовка HTTP 410 (Gone).

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

Класс RedirectFallbackMiddleware обрабатывает только ошибки 404, остальное игнорируется.

Следует отметить, что порядок записей в конфигурационном параметре MIDDLEWARE_CLASSES имеет значение. Обычно RedirectFallbackMiddleware располагают поближе к концу списка, так как перенаправление является последним действием при обработке ошибки 404.

Добавление, изменение и удаление

Вы можете добавлять, изменять и удалять перенаправления двумя способами:

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

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

Через Python API

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

>>> from django.contrib.redirects.models import Redirect
>>> from django.contrib.sites.models import Site
>>> red = Redirect(
...     site=Site.objects.get(id=1),
...     old_path='/music/',
...     new_path='/sections/arts/music/',
... )
>>> red.save()
>>> Redirect.objects.get(old_path='/music/')
<Redirect: /music/ ---> /sections/arts/music/>


Увидели ошибку?
Выделите её мышкой и нажмите
Ctrl-Enter
Обработано:
1049 49 130 71

Версия книги
1.0 2.0
Версия 2.0 в процессе перевода!

Мой луч
Многообразие света

Полезное
Актуальные вакансии, Python работа для python-разработчиков.


Скачать в формате
CHM от 2 сентября

Заказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта.
Чем чаще заказываете — тем больше перевожу.

Русская группа

на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!
R130494980980
Z425285133788
E112528079659
U327380922061

Книга помогла реализовать:
Проект «Мой луч»
АРМ УФМС.


Мой вебсайт стоит666 337,31 руб

© 2008-2009 Ruslan Popov @ gmail.com Powered by Django 1.1 beta 1 SVN-11114
Главная | Архив новостей | Общение | Площадка | Примеры OpenID