SlideShare une entreprise Scribd logo
1  sur  33
Django: инструкция по
    применению

                    PyCon Ukraine
                  22 октября 2011
                Колодяжный Иван


                                    1 из 21
Существует 2 способа
использовать Django




       PyCon Ukraine 2011   2 из 22
Алгоритм работы с Django
Пункт #1. Берем Django
Пункт #2. Берем напильник




                 PyCon Ukraine 2011   3 из 22
Алгоритм работы с Django
Пункт #1. Берем Django
Пункт #2. Берем напильник




Пункт #n. Пользуемcя и радуемся жизни

                 PyCon Ukraine 2011     3 из 22
Алгоритм работы с Django (ver.2)
Пункт #1. Берем Django
Пункт #2. Берем напильник
…




                 PyCon Ukraine 2011   4 из 22
Алгоритм работы с Django (ver.2)
Пункт #1. Берем Django
Пункт #2. Берем напильник
…
Пункт #n. Выбрасываем Django.




                 PyCon Ukraine 2011   4 из 22
Алгоритм работы с Django (ver.2)
Пункт #1. Берем Django
Пункт #2. Берем напильник
…
Пункт #n. Выбрасываем Django.
…

Пункт #m-1. Находим подходящее решение
Пункт #m. Пользуемcя и радуемся жизни

                 PyCon Ukraine 2011      4 из 22
Алгоритм работы с Django (ver.2.1)



Пункт #1. Помним о Django
Пункт #2. Понимаем что он нам не подходит
Пункт #3. Находим подходящее решение
Пункт #3. Пользуемcя и радуемся жизни



                  PyCon Ukraine 2011    5 из 22
Когда нам подходит Django
• Нужен опыт с Django
• Нужно быстро сделать сайт с админкой
• Есть хорошее готовое приложение/модуль
  для Django
• Стандартного ORM вполне достаточно
• Какие-то из модулей Django очень хорошо
  подходят для текущей задачи
• Нужно сделать что-то очень быстро и нет
  опыта с другими фреймворками.

                  PyCon Ukraine 2011    6 из 22
Когда нам подходит Django
• Создание CMS
• Создать приложение на основе готового




                  PyCon Ukraine 2011      7 из 22
Создание CMS
•   Admin site                     •    Site map
•   Authentication                 •    Static files
•   Comments                       •    Syndication feeds
•   E-mail                         •    Validators
•   Flat pages
•   Pagination
•   Redirects




                        PyCon Ukraine 2011                  8 из 22
Когда нам не подходит Django
• Нет взаимодействия с базой данных
• Отсутствует presentation layer
• Замена большей части стандартных
  компонентов
• Использование NoSQL, GAE




                 PyCon Ukraine 2011   9 из 22
Веб приложение без доступа к БД




            PyCon Ukraine 2011   10 из 22
Веб приложение без доступа к БД




• Удаляем models.py
• Реализовываем доступ к данным
  (REST, чтение из файлов и т.д)
• Забываем про ModelForms

                 PyCon Ukraine 2011   10 из 22
Веб приложение без доступа к БД
• Стандартная
  аутентификация/авториз
  ация не подходит
• Вслед за этим пишем
  свою админку




                 PyCon Ukraine 2011   11 из 22
Веб приложение без доступа к БД
• Стандартная
  аутентификация/авториз
  ация не подходит
• Вслед за этим пишем
  свою админку




                 PyCon Ukraine 2011   11 из 22
Веб приложение без доступа к БД
• Выбрасываем django
• Берем небольшой веб-фреймворк
  (например, flask)
• Пишем нужную нам логику
• Не думаем о том, что что-либо в
  используемом фреймворке нам нельзя
  использовать


                 PyCon Ukraine 2011    12 из 22
Веб приложение без доступа к БД
• Нет ненужно когда
• Размер приложение, как
  правило, становится меньше




                 PyCon Ukraine 2011   13 из 22
Веб приложение без доступа к БД
• Нет ненужно когда
• Размер приложение, как
  правило, становится меньше




                 PyCon Ukraine 2011   13 из 22
Отсутствует GUI (REST-
       сервис, COMET-сервер)
• Шаблоны не нужны
• «Тяжелые» запросы плохо подходят для
  COMET
• Многопоточность «из коробки» -
  использование threading
• Non-blocking I/O?



                 PyCon Ukraine 2011      14 из 22
Отсутствует GUI (REST-
       сервис, COMET-сервер)
• Использование
  инструментов, предназначенных для таких
  задач




                 PyCon Ukraine 2011    15 из 22
Отсутствует GUI (REST-
       сервис, COMET-сервер)
• Использование
  инструментов, предназначенных для таких
  задач




                 PyCon Ukraine 2011    15 из 22
Замена большей части стандартных
          компонентов
                        • Выбросить
                          стандартный ORM
                        • Использовать другой
                          template engine
                        • Попытаться это все
                          интегрировать и
                          родную
                          инфраструктуры (form
                          views, admin site)

             PyCon Ukraine 2011            16 из 22
Замена большей части стандартных
          компонентов
                        • Выбросить
                          стандартный ORM
                        • Использовать другой
                          template engine
                        • Попытаться это все
                          интегрировать и
                          родную
                          инфраструктуры (form
                          views, admin site)

             PyCon Ukraine 2011            16 из 22
Замена большей части стандартных
          компонентов
• Принцип Паретто 20/80
  – 80% времени переписывается стандартный
    функционал




                   PyCon Ukraine 2011        17 из 22
Замена большей части стандартных
          компонентов
• Принцип Паретто 20/80
  – 80% времени переписывается стандартный
    функционал




                   PyCon Ukraine 2011        17 из 22
Замена большей части стандартных
          компонентов
• Принцип Паретто 20/80
  – 80% времени переписывается стандартный
    функционал




  – Еще 80% времени - исправление багов

                   PyCon Ukraine 2011        17 из 22
Замена большей части стандартных
          компонентов
• Принцип Паретто 20/80
  – 80% пишем сами
  – 20% есть в Django




                    PyCon Ukraine 2011   18 из 22
Замена большей части стандартных
          компонентов
• Принцип Паретто 20/80
  – 80% пишем сами
  – 20% есть в Django
• Зачем нам Django?




                    PyCon Ukraine 2011   18 из 22
Использование NoSQL
• Используем стандартный API для ORM
• Используем django nonrel
• Используем почти всю django инфраструктуру но:
  - помним про join
  - готовимся делать патчи для django nonrel




                        PyCon Ukraine 2011         19 из 22
Использование NoSQL
• Используем модуль для работы с нужной NoSQL БД
• Отказываемся от всей Django инфраструктуры
• Задумываемся о целесообразности использования Django




                       PyCon Ukraine 2011          20 из 22
PyCon Ukraine 2011   21 из 22
Спасибо
E-mail: e0ne@e0ne.info          Skype: e0ne-user
Twitter: @e0ne                  Blog: http://blog.e0ne.info/




                         PyCon Ukraine 2011              22 из 22

Contenu connexe

Tendances

Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Yandex
 
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магияAleksey Solntsev
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Fwdays
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Fwdays
 
JPHP - О проекте на простом языке
JPHP - О проекте на простом языкеJPHP - О проекте на простом языке
JPHP - О проекте на простом языкеDmitry Zaytsev
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Ontico
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Ontico
 
Иван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаИван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаYandex
 
Про асинхронное сетевое программирование
Про асинхронное сетевое программированиеПро асинхронное сетевое программирование
Про асинхронное сетевое программированиеPython Meetup
 
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотестыСпецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты7bits
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоFuenteovejuna
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке СиPositive Hack Days
 
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Stas Vyschepan
 
курс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключениякурс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключения7bits
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод7bits
 
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?HappyDev-lite
 
Введение в maven
Введение в mavenВведение в maven
Введение в mavenDmitry Zinushin
 
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)AvitoTech
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для ApproofPositive Development User Group
 

Tendances (20)

Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
 
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магия
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"
 
JPHP - О проекте на простом языке
JPHP - О проекте на простом языкеJPHP - О проекте на простом языке
JPHP - О проекте на простом языке
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
 
Иван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаИван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проекта
 
Про асинхронное сетевое программирование
Про асинхронное сетевое программированиеПро асинхронное сетевое программирование
Про асинхронное сетевое программирование
 
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотестыСпецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей Романенко
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
 
курс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключениякурс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключения
 
JPHP
JPHPJPHP
JPHP
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
 
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
 
Введение в maven
Введение в mavenВведение в maven
Введение в maven
 
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для Approof
 

Similaire à Django: инструкция по применению

Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаRoman Dvornov
 
C&C for coffee'n'code
C&C for coffee'n'codeC&C for coffee'n'code
C&C for coffee'n'codeIvan Mosiev
 
Go для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаGo для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаUP2IT
 
Опыт разработки мобильных приложений в Applifto
Опыт разработки мобильных приложений в AppliftoОпыт разработки мобильных приложений в Applifto
Опыт разработки мобильных приложений в AppliftoAnatoly Sharifulin
 
Современный станок верстальщика
Современный станок верстальщикаСовременный станок верстальщика
Современный станок верстальщикаOdessaFrontend
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)guest40e031
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Serversrit2010
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...Sergey Ponomarev
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеSQALab
 
Rozum robotics release cycle
Rozum robotics release cycleRozum robotics release cycle
Rozum robotics release cycleNikolay Lagutko
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersAleksey Fomkin
 
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)Ontico
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораSQALab
 
Константин Васильев «Fody против рутины»
Константин Васильев «Fody против рутины»Константин Васильев «Fody против рутины»
Константин Васильев «Fody против рутины»SpbDotNet Community
 
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Cisco Russia
 
Как мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.RuКак мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.RuVladimir Rudnyh
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON
 

Similaire à Django: инструкция по применению (20)

Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
C&C for coffee'n'code
C&C for coffee'n'codeC&C for coffee'n'code
C&C for coffee'n'code
 
Go для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаGo для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчика
 
Опыт разработки мобильных приложений в Applifto
Опыт разработки мобильных приложений в AppliftoОпыт разработки мобильных приложений в Applifto
Опыт разработки мобильных приложений в Applifto
 
Современный станок верстальщика
Современный станок верстальщикаСовременный станок верстальщика
Современный станок верстальщика
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
NPAPI
NPAPINPAPI
NPAPI
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проекте
 
Rozum robotics release cycle
Rozum robotics release cycleRozum robotics release cycle
Rozum robotics release cycle
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web Workers
 
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
 
Константин Васильев «Fody против рутины»
Константин Васильев «Fody против рутины»Константин Васильев «Fody против рутины»
Константин Васильев «Fody против рутины»
 
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
 
Как мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.RuКак мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.Ru
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 

Plus de Ivan Kolodyazhny

Continuous Integration для QA
Continuous Integration для QAContinuous Integration для QA
Continuous Integration для QAIvan Kolodyazhny
 
Логирование в Python: то, о чем не пишут в документации
Логирование в Python: то, о чем не пишут в документацииЛогирование в Python: то, о чем не пишут в документации
Логирование в Python: то, о чем не пишут в документацииIvan Kolodyazhny
 
Private Clouds and OpenStack: WFT?
Private Clouds and OpenStack: WFT?Private Clouds and OpenStack: WFT?
Private Clouds and OpenStack: WFT?Ivan Kolodyazhny
 
Cross Site Scripting aka XSS: Начало
Cross Site Scripting aka XSS: НачалоCross Site Scripting aka XSS: Начало
Cross Site Scripting aka XSS: НачалоIvan Kolodyazhny
 

Plus de Ivan Kolodyazhny (6)

Python dependencies
Python dependenciesPython dependencies
Python dependencies
 
Continuous Integration для QA
Continuous Integration для QAContinuous Integration для QA
Continuous Integration для QA
 
Логирование в Python: то, о чем не пишут в документации
Логирование в Python: то, о чем не пишут в документацииЛогирование в Python: то, о чем не пишут в документации
Логирование в Python: то, о чем не пишут в документации
 
Private Clouds and OpenStack: WFT?
Private Clouds and OpenStack: WFT?Private Clouds and OpenStack: WFT?
Private Clouds and OpenStack: WFT?
 
DneprPy #0: Openstack
DneprPy #0: OpenstackDneprPy #0: Openstack
DneprPy #0: Openstack
 
Cross Site Scripting aka XSS: Начало
Cross Site Scripting aka XSS: НачалоCross Site Scripting aka XSS: Начало
Cross Site Scripting aka XSS: Начало
 

Django: инструкция по применению

  • 1. Django: инструкция по применению PyCon Ukraine 22 октября 2011 Колодяжный Иван 1 из 21
  • 3. Алгоритм работы с Django Пункт #1. Берем Django Пункт #2. Берем напильник PyCon Ukraine 2011 3 из 22
  • 4. Алгоритм работы с Django Пункт #1. Берем Django Пункт #2. Берем напильник Пункт #n. Пользуемcя и радуемся жизни PyCon Ukraine 2011 3 из 22
  • 5. Алгоритм работы с Django (ver.2) Пункт #1. Берем Django Пункт #2. Берем напильник … PyCon Ukraine 2011 4 из 22
  • 6. Алгоритм работы с Django (ver.2) Пункт #1. Берем Django Пункт #2. Берем напильник … Пункт #n. Выбрасываем Django. PyCon Ukraine 2011 4 из 22
  • 7. Алгоритм работы с Django (ver.2) Пункт #1. Берем Django Пункт #2. Берем напильник … Пункт #n. Выбрасываем Django. … Пункт #m-1. Находим подходящее решение Пункт #m. Пользуемcя и радуемся жизни PyCon Ukraine 2011 4 из 22
  • 8. Алгоритм работы с Django (ver.2.1) Пункт #1. Помним о Django Пункт #2. Понимаем что он нам не подходит Пункт #3. Находим подходящее решение Пункт #3. Пользуемcя и радуемся жизни PyCon Ukraine 2011 5 из 22
  • 9. Когда нам подходит Django • Нужен опыт с Django • Нужно быстро сделать сайт с админкой • Есть хорошее готовое приложение/модуль для Django • Стандартного ORM вполне достаточно • Какие-то из модулей Django очень хорошо подходят для текущей задачи • Нужно сделать что-то очень быстро и нет опыта с другими фреймворками. PyCon Ukraine 2011 6 из 22
  • 10. Когда нам подходит Django • Создание CMS • Создать приложение на основе готового PyCon Ukraine 2011 7 из 22
  • 11. Создание CMS • Admin site • Site map • Authentication • Static files • Comments • Syndication feeds • E-mail • Validators • Flat pages • Pagination • Redirects PyCon Ukraine 2011 8 из 22
  • 12. Когда нам не подходит Django • Нет взаимодействия с базой данных • Отсутствует presentation layer • Замена большей части стандартных компонентов • Использование NoSQL, GAE PyCon Ukraine 2011 9 из 22
  • 13. Веб приложение без доступа к БД PyCon Ukraine 2011 10 из 22
  • 14. Веб приложение без доступа к БД • Удаляем models.py • Реализовываем доступ к данным (REST, чтение из файлов и т.д) • Забываем про ModelForms PyCon Ukraine 2011 10 из 22
  • 15. Веб приложение без доступа к БД • Стандартная аутентификация/авториз ация не подходит • Вслед за этим пишем свою админку PyCon Ukraine 2011 11 из 22
  • 16. Веб приложение без доступа к БД • Стандартная аутентификация/авториз ация не подходит • Вслед за этим пишем свою админку PyCon Ukraine 2011 11 из 22
  • 17. Веб приложение без доступа к БД • Выбрасываем django • Берем небольшой веб-фреймворк (например, flask) • Пишем нужную нам логику • Не думаем о том, что что-либо в используемом фреймворке нам нельзя использовать PyCon Ukraine 2011 12 из 22
  • 18. Веб приложение без доступа к БД • Нет ненужно когда • Размер приложение, как правило, становится меньше PyCon Ukraine 2011 13 из 22
  • 19. Веб приложение без доступа к БД • Нет ненужно когда • Размер приложение, как правило, становится меньше PyCon Ukraine 2011 13 из 22
  • 20. Отсутствует GUI (REST- сервис, COMET-сервер) • Шаблоны не нужны • «Тяжелые» запросы плохо подходят для COMET • Многопоточность «из коробки» - использование threading • Non-blocking I/O? PyCon Ukraine 2011 14 из 22
  • 21. Отсутствует GUI (REST- сервис, COMET-сервер) • Использование инструментов, предназначенных для таких задач PyCon Ukraine 2011 15 из 22
  • 22. Отсутствует GUI (REST- сервис, COMET-сервер) • Использование инструментов, предназначенных для таких задач PyCon Ukraine 2011 15 из 22
  • 23. Замена большей части стандартных компонентов • Выбросить стандартный ORM • Использовать другой template engine • Попытаться это все интегрировать и родную инфраструктуры (form views, admin site) PyCon Ukraine 2011 16 из 22
  • 24. Замена большей части стандартных компонентов • Выбросить стандартный ORM • Использовать другой template engine • Попытаться это все интегрировать и родную инфраструктуры (form views, admin site) PyCon Ukraine 2011 16 из 22
  • 25. Замена большей части стандартных компонентов • Принцип Паретто 20/80 – 80% времени переписывается стандартный функционал PyCon Ukraine 2011 17 из 22
  • 26. Замена большей части стандартных компонентов • Принцип Паретто 20/80 – 80% времени переписывается стандартный функционал PyCon Ukraine 2011 17 из 22
  • 27. Замена большей части стандартных компонентов • Принцип Паретто 20/80 – 80% времени переписывается стандартный функционал – Еще 80% времени - исправление багов PyCon Ukraine 2011 17 из 22
  • 28. Замена большей части стандартных компонентов • Принцип Паретто 20/80 – 80% пишем сами – 20% есть в Django PyCon Ukraine 2011 18 из 22
  • 29. Замена большей части стандартных компонентов • Принцип Паретто 20/80 – 80% пишем сами – 20% есть в Django • Зачем нам Django? PyCon Ukraine 2011 18 из 22
  • 30. Использование NoSQL • Используем стандартный API для ORM • Используем django nonrel • Используем почти всю django инфраструктуру но: - помним про join - готовимся делать патчи для django nonrel PyCon Ukraine 2011 19 из 22
  • 31. Использование NoSQL • Используем модуль для работы с нужной NoSQL БД • Отказываемся от всей Django инфраструктуры • Задумываемся о целесообразности использования Django PyCon Ukraine 2011 20 из 22
  • 32. PyCon Ukraine 2011 21 из 22
  • 33. Спасибо E-mail: e0ne@e0ne.info Skype: e0ne-user Twitter: @e0ne Blog: http://blog.e0ne.info/ PyCon Ukraine 2011 22 из 22

Notes de l'éditeur

  1. Test notes
  2. Есть только 2 способа. Когда он нам подходит, и когда не подходит. Остальное – их комбинации.Сразу отказываетесь от джанго – это способ №2Намеренно не буду говорить о других веб-фреймворках (pyramid, pylons), но многое сказанное будет актуальным и для них
  3. В качестве напильника: свой код, готовые модули/приложения и т.д.
  4. Понимаем что что-то не так
  5. Для тех, кто не использует джанго
  6. Описание 5+1 случаев, когда djangoхорошо подходит.Субъективно. Хорошо что есть выбор фреймворков.Написал эти 6 пунктов я тогда, когда в одной части нашего проекта мы отказались от джанго в пользу другого, более компактного фреймворка.Итого получилось 6 пунктов. Если не выполняются хотя бы 3, то нужно задуматься о целесобразности использования Django. IMHO.
  7. Описание случаев, когда djangoхорошо подходит.Разбор полетов
  8. Описание кейса, когда джанго подходит очень хорошо на примере контентного проекта.Для cms/контентного проекта из коробки есть почти все готовоеhttps://docs.djangoproject.com/en/1.3/На слайде вынесены компоненты из django.core & django.contribдля примера того, что уже почти все реализовано за нас, остается только использовать готовое. Ну и напилиник…
  9. Описание кейсов, когда от джанко стоит отказаться.Нет модели или шаблонов? Заменяем стандартный движок, орм, пишем свою админку для пользователей? Что тогда остаются от джанго? Стоит ли оно чтобы продолжать использовать его? Я думаю что нет..Далее идет описание случаев, когда без джанго задача решается проще/быстрее
  10. В качестве модели – что угодно, кроме БД (веб-серсисы, файлова система, сокеты..)
  11. В качестве модели – что угодно, кроме БД (веб-серсисы, файлова система, сокеты..)
  12. В результате – выкинули частьфреймворка, программисты злые: функциональнсть есть, знакома, но пользоваться нельзя.
  13. В результате – выкинули частьфреймворка, программисты злые: функциональнсть есть, (авторизация, молел-формс, орм) знакома, но пользоваться нельзя.
  14. Все хорошо и радуемся жизни
  15. Все хорошо и радуемся жизни
  16. Нетгуи – нет template engine.Запросы в джанго – не самые легкие, реализация комета – тормоза и много памятиВсю работу с многопоточностью пишем руками, используя стандартные модулиНет поддержки неблокирующего ввода/вывода
  17. Есть много готовых решений для таких задач. Работают быстрее.Eventlet, gevent, NodeJS
  18. Есть много готовых решений для таких задач. Работают быстрее.Eventlet, gevent, NodeJSTodo: что юзаеттвистед и торнадо
  19. Большую часть времени – создаем велосипедПотом столько же дорабатываем велосипед напильником
  20. Большую часть времени – создаем велосипедПотом столько же дорабатываем велосипед напильником
  21. Большую часть времени – создаем велосипедПотом столько же дорабатываем велосипед напильником
  22. Пишем 80% функциональности сами? Повод задуматься о выборе другого фреймворка
  23. Пишем 80% функциональности сами? Повод задуматься о выборе другого фреймворка
  24. Надеемся что никто не залезет на продакшн и не напишет join!Вожможные ошибки в рантайме при использовании стандартного апи, которое «всегда работало» с реляционными бд. Пару слов о gaeTODO: версия djangononrel
  25. Невозможность использование всего, что связано с модельюRedis, memcacheDB
  26. жданго – не швейцарский нож! Насколько бы он ни был хорош, не стоит его использовать везде.Иногда разработчики принимают решение написать свой мини-фреймворк для решение текущей задачи
  27. «всем спасибо, все свободны» (с) 