Средства Django для перенаправления позволяются вам легко управлять этим процессом, храня всю информацию в базе данных и рассматривая перенаправления как и любую другую модель. Например, вы можете использовать это средства для указания Django, что надо «перенаправлять любой запрос к /music/ на /sections/arts/music/.» Это становится очень полезным когда возникает необходимость поменять местами части вашего сайта. Веб разработчики должны делать всё для того, чтобы все ссылки работали.
Для установки приложения выполните следующие шаги:
Добавьте django.contrib.redirects в параметр конфигурации INSTALLED_APPS.
Добавьте django.contrib.redirects.middleware.RedirectFallbackMiddleware в параметр конфигурации MIDDLEWARE_CLASSES.
Выполните команду 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». Редактирование перенаправлений производится аналогично редактированию любого объекта системы.
Как было описано ранее, статические страницы представлены в
виде стандартной 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/>
| Пред. | Уровень выше | След. |
| Статические страницы | Начало | Защита от CSRF |
0 comments | Make a comment