Как мне лучше узнать, как работает django? - PullRequest
15 голосов
/ 24 ноября 2010

, поэтому я немного поигрался с django, и мне действительно нравится этот фреймворк.Тем не менее, я хотел бы лучше понять, как это на самом деле работает «под прикрытием».

Вот мое текущее представление о мире клиент-сервер-джанго, которое очень грубое и, вероятно, сделает ваши ногти на ногах (извините) ...

  1. Браузер отправляет Httpзапрос к серверу.
  2. Сервер выполняет свою магию и выдает запрос через CGI в django (?)
  3. Некоторая часть django (которая?) получает запрос и превращает его вОбъект запроса django.
  4. Объект запроса блуждает по некоторым туманным путям через промежуточное ПО, которое делает с ним странные вещи.
  5. Объект запроса в конечном итоге оказывается в некоторой функции (которая?), которая смотрит наURL, берет шаблоны из urls.py и вызывает функцию представления.
  6. Функции представления делают свое дело (с моделями и шаблонами в качестве партнеров в недостатках), это, вероятно, где у меня самая сильная иллюзияпонимания (ну, кроме магии абстракции базы данных, то есть ...;)
  7. Функции представления возвращают объект HttpResponse, я думаю, это возвращаетсяn некоторые туманные пути к CGI.
  8. Веб-сервер снова вступает во владение и отправляет клиенту ответ Http.

Хорошо, так какого черта мой вопрос вы задаете?Ну, как все это работает, правда?Я не ожидаю, что вы кормите меня все ложкой ... Я подозреваю, что в конечном итоге ответ будет "прочитать источник, Люк", однако я был бы признателен, если бы

  1. Вы могли бы очиститьмои заблуждения, грубияны
  2. подскажите, с чего начать?То, что я хотел бы сделать, это захватить отладчик и просто пройтись по процессу пару раз, но я действительно не знаю, с чего начать
  3. , вы могли бы указать мне на любые документы, которые объясняют это хорошо... да, я слышал об этой штуке в Google, но на самом деле не нашел ничего сверхполезного.

большое спасибо Пол

Ответы [ 2 ]

13 голосов
/ 24 ноября 2010

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

В основном, Django взаимодействует с сервером через WSGI, который является спецификацией Python для веб-серверов для взаимодействия с веб-приложениями. Вы можете увидеть больше информации на сайте WSGI .

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

8 голосов
/ 24 ноября 2010

Смотрите учебник Джеймса Беннетта Django in the Depth от Pycon 2015.

С сайта Pycon вот краткое изложение разговора Джеймса:

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

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

...