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

Методы

После того как вы узнали, что такое компоненты и как их устанавливать, давайте рассмотрим все доступные методы, которые могут определяться в классах компонентов.

Конструктор

Используйте __init__(self) для регистрации класса компонента в системе.

В целях повышения производительности класс каждого активированного компонента инициализируется только один раз для серверного процесса. Это означает, что __init__(self) вызывается только один раз, при запуске сервера.

Стандартной причиной для реализации метода __init__(self) является проверка действительно ли нужен данный компонент. Если __init__(self) вызывает исключение django.core.exceptions.MiddlewareNotUsed, тогда Django удаляет компонент из стека компонентов. Вы можете использовать эту особенность для проверки некоторой части программного обеспечения, которое необходимо для работы компонента, для проверки работает ли сервер в режиме отладки или для других подобных ситуаций.

Если для компонента определён метод __init__(self), то данный метод не должен принимать никаких дополнительных аргументов, кроме self.

Препроцессор запроса

Этот метод вызывается при получении запроса — перед тем как Django приступает к обработке URL для определения функции представления, которую требуется запустить. Метод получает объект HttpRequest и может изменять его.

Метод process_request() должен возвращать или None или объект HttpResponse:

  • Если метод возвратил None, Django продолжает обработку этого запроса, используя для этого другие компоненты, а затем и соответствующее представление.

  • Если метод возвратил объект HttpResponse, Django не будет вызывать другие компоненты и соответствующее представление, а просто вернёт этот объект.

Препроцессор представления

Этот метод вызывается после препроцессора запроса и после того как Django определил какое именно представление следует использовать для обработки этого запроса, но прежде чем это представление будет использовано.

Аргументы, передаваемые в это представление, показаны в таблице « Аргументы передаваемые в process_view() ».

Таблица 15.1. Аргументы передаваемые в process_view()

АргументКомментарий
requestОбъект HttpResponse
viewПредставление, которое используется Django для обработки данного запроса. Это функциональный объект, а не просто имя функции, представленное в виде строки.
argsСписок неименованных аргументов, который будет передан в представление, без аргумента request (который всегда является первым аргументом представления).
kwargsСловарь именованных аргументов, который будет передан в представление.


Подобно методу process_request(), данный метод должен возвращать либо None, либо объект HttpResponse.

  • Если возвращается None, Django продолжает обработку данного запроса, используя остальные компоненты, а затем и соответствующее представление.

  • Если возвращается объект HttpResponse, Django не будет вызывать другие компоненты и соответствующее представление. Django немедленно вернёт полученный объект.

Постпроцессор отклика

Этот метод вызывается после вызова функции представления и генерации отклика. В этом месте, постпроцессор может модифицировать содержимое отклика. Один очевидный случай применения — компрессия контента, т.е., применение утилиты gzip над отдаваемым HTML.

Назначение параметров должно быть понятно из их названия: request — объект запроса, response — объект отклика, возвращённый из представления.

В отличие от препроцессоров запроса и представления, которые могут возвращать None, постпроцессор process_response() должен возвращать объект HttpResponse. Этот отклик может быть оригинальным, т.е. тем, который был передан в метод (возможно, изменённый) или совершенно новым.

Постпроцессор исключения

Этот метод вызывается в случае, если что-то идёт не так и представление вызывает необработанное исключение. Вы можете использовать этот метод для отправки уведомлений об ошибках, записи информации об исключении в журнал или даже можете попытаться исправить ошибку автоматически.

Параметры метода: request — объект, с которым мы работаем, а exception — объект Exception, созданный функцией представления.

Метод process_exception() должен возвращать либо None, либо HttpResponse.

  • Если возвращается None, Django продолжает обработку данного исключения встроенным механизмом.

  • Если возвращается объект HttpResponse, Django будет использовать этот отклик вместо того, который отдал встроенный механизм обработки исключений.

Замечание

Django поставляется с рядом компонентов, которые будут рассмотрены в следующей секции. Эти компоненты можно рассматривать в качестве хороших примеров. Изучение их исходного кода должно дать вам понимание мощи системы компонентов.

Вы также можете найти ряд примеров предоставленных сообществом Django на wiki: http://code.djangoproject.com/wiki/ContributedMiddleware.


Увидели ошибку?
Выделите её мышкой и нажмите
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