Django в картинках

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

Ниже приведена главная картинка. На ней грубыми мазками изображено, какие этапы проходят данные во время их обработки внутри сайта, написанного на Django.

Рис.1 Схема потоков данных в Django.

Пояснения к картинке:

Цвета:

Серый: Программы, не входящие в Django
Розовый: Элементы Django.
Зеленый: Элементы сайта, которые пишет разработчик.
Розовозеленый градиент: Элементы Django. Предусмотрена возможность разработчика добавить свои обработчики в это же место.

Этапы прохождения данных:

1 Браузер отправляет запрос на получение HTML страницы.
2 WEB сервер получает запрос, определяет, кто должен выдать HTML страницу.
3 Сервер при помощи модуля modwsgi передает запрос Django.
4 Методы process_request() классов middlware обрабатывают запрос и могут что-то в него добавить и передать дальше, а могут прервать обработку и сразу вернуть HTTPResponse.
5 URL dispatcher смотрит, какой адрес вызывается, определяет какой View вызвать для обработки запроса и вызывает его.
6 Перед вызвом View вызываются методы process_view() классов middlware обрабатывают запрос и могут что-то в него добавить и передать дальше, а могут прервать обработку и сразу вернуть HTTPResponse.
7 Вызванный View подготавливает информацию, которую нужно выдать как HTML страницу. Подготовленную информацию он передает в виде контекста (переменных), которые будут доступны из темплаты.
8 View получает информацию, которая нужна для формирования HTML страницы из базы данных.
9 Вью вызывает обработчик темплейта с нужным темплейтом и контекстом. Обработчик интерпретирует темплейт с контекстом и возвращает готовый response (ответ).
10 Вызываются методы process_response() классов middlware обрабатывают response, могут что-то в него добавить и передают дальше.
11 modwsgi получает ответ Django (HttpResponse) и передает его WEB серверу.
12 Вебсервер отдает HTML страницу браузеру.
13 Браузер получает страницу, отрисовывает ее и пользователь наслаждается результатом.

Вот примерно так.

Опубликовано: January 16, 2011

Комментарии:


Имя: Денис Каратаев

>Браузер при помощи модуля modwsgi передает запрос Django.

не браузер, а сервер.



Имя: Evgeny

Спасибо, поправлю.



Имя: Ostrov

Хороший рисунок. Порадовался, что есть такие увлеченные люди.



Имя: 111

ыыы



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

Имя:

Комментарий: