Продолжаем новый формат и повышаем планку. На этот я предлагаю вам потратить 3 часа своей жизни ради интереснейшего доклада с PyCon US 2012 - Django in Depth, это дополненная современными реалиями версия одноименного доклада с PyCon US 2010, от того же докладчика. Докладчика, к слову, зовут James Bennett, который помимо основной работы в Mozilla успевает быть контрибьютором и релиз-менеджером Django, да и вообще стоял у истоков его создания. Доклад, в целом, рассчитан на разработчиков с опытом, повествование построено снизу вверх, то есть с глубинных процессов внутри Django - на поверхность. И несмотря на свою длину, интересен до последней минуты.
Обязательно к просмотру всем, кого интересует какие механизмы работают внутри Django и почему. Ну и, конечно, советы от Django-гуру не повредят вашему мастерству :)
Видео (3 часа 5 минут)
По существу, в докладе освещены такие темы:
1. ORM
2. Формы
3. Шаблоны
А также:
Ну и некоторые факты с доклада, для затравки:
Обязательно к просмотру всем, кого интересует какие механизмы работают внутри Django и почему. Ну и, конечно, советы от Django-гуру не повредят вашему мастерству :)
Видео (3 часа 5 минут)
По существу, в докладе освещены такие темы:
1. ORM
- архитектура Django 1.4;
- как работает Django ORM, вся цепочка от database backend до model;
- менеджеры, кастомные QuerySet-классы;
- корректная работа в несколькими БД (роутинг, шардинг);
- трюки с переопределением методов модели .save() и .delete();
- абстрактные и прокси- модели;
- Q- и F- выражения.
2. Формы
- кастомные виджеты/мультивиджеты;
- валидаторы;
- динамическое создание форм;
- медиа-файлы.
3. Шаблоны
- как работает загрузчик шаблонов;
- low-level работы шаблонизатора;
- темплейт-теги и их парсер;
- что есть контекст на самом деле и как происходит рендеринг.
А также:
- request/response;
- URL resolution;
- handlers;
- views (в том числе любимые нами class-based);
- middlewares;
- админка (оговорены некоторые возможности кастомизации, что можно и что не стоит переопределять).
Ну и некоторые факты с доклада, для затравки:
- "Oracle is weird" (Джеймс о базе данных, неоднократно упрекнул её в "магичности");
- имплементация класса Query занимает 1900 строк кода, это один из самых сложных и загадочных (here be dragons) модулей во всём Django;
- Query.__str__() возвращает скомпилированный SQL-запрос;
- QuerySet.exists() намного эффективней обычной булевой проверки;
- "Just don't use classmethods, use managers". Аргументы не до конца ясны, но смысл в том, что нужно описывать действия над моделью на уровне менеджера модели. Видимо потому, что менеджер имеет больше отношения к объекту типа queryset, чем classmethod и концептуально вписывается в архитектуру ORM (что тоже не аргумент, но поверим опытному дядьке). Обсуждение вопроса на 51-й минуте видео.
Комментариев нет:
Отправить комментарий