Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Web Project Full Circle
Rostislav Bryzgunov
E-Mail: rostislav.bryzgunov@webriders.com.ua
Skype: rostislav.brizgunov
LinkedIn: rbrizgunov
Habrahabr: kottenator
Olexiy Strashko
E-Mail: olexiy.strashko@webriders.com.ua
Skype: strashko.olexiy
LinkedIn: olexiystrashko
Вступление
* Кто мы?
** мы - студия WebRiders, делаем сайты на Django
* Почему Django?
** потому что он очень хорош
* О чём пойдёт речь?
** полный цикл разработки проекта
** типичные задачи и их решение
** развёртка и поддержка
** делимся опытом и результатами
Вступление
Наша цель:
* Популяризировать Django
* Поделиться своим живым опытом
Для кого доклад:
* Начинающие Django-разработчики
* Те, кто ещё не начал, но хочет
* Те, кто уже начал, да не на том
Ростик
Наш доклад
Структура
проекта
Об этом мало информации, как будто всё просто и
понятно. Мы искали и почти ничего не нашли
1. Структура проекта
Старт проекта
# новый чистенький проект
$ django-admin.py startproject Zakzak
1. Структура проекта
Первые приложения
# наши первые приложения
$ manage.py startapp myapp
# и начали плодиться папки в корне...
1. Структура проекта
Дальше - больше
# медиа, шаблоны, сторонние приложения - всё сюда же
1. Структура проекта
Выделяем приложения
# изолируем django apps # ... и библиотеки
Леха
1. Структура проекта
media, static & source
# Медиа и статика - отдельно, исходный код - отдельно!
# ... и мы говорим "НЕТ!" директории "templates/"
1. Структура проекта
settings.py - теперь в пакете!
# Проект растёт, settings.py "загрязняются",
# что затрудняет создание новых проектов... Поэтому:
1. Структура проекта
Результат
Результат - небольшой open-source проект -
Django Template Project:
http://bitbucket.org/webriders/django-template-project/
Пришло время для вопросов (по первой
части)
Джентльменский
набор
приложений
Рост
2. Джентльменский набор приложений
Что обычно нужно посетителям наших сайтов?
и что хорошо бы использовать готовое а не выдумывать велосипед
1. Читать сайт на родном языке (I18N, L10n)
2. Быстро и просто наполнять контент (Admin)
3. Найти нужную информацию (поиск, теги)
4. Еще много чего (Twitter, RSS, регистрация, ...)
2. Джентльменский набор приложений
1. Читать сайт на родном языке (I18N, L10n)
2. Джентльменский набор приложений
1. Читать сайт на родном языке (I18N, L10n)
django-multilingual
Хранение:
- дополнительная таблица переводов
Оценка:
+ переводы в отдельных таблицах
+ {{ title_any }}
- быстродействие
- сложность поддержки
- поддержка South
- изменение models.py
django-modeltranslation
Хранение:
- добавление полей: title_en, title_ru...
Оценка:
+ скорость
+ простота
+ models.py - не меняется
+ поддержка South
+ развитие проекта
Советуем!
VS
2. Джентльменский набор приложений
1. Читать сайт на родном языке (I18N, L10n)
gettext
Стандартная,
проверенная временем
библиотека.
Django одобряет,
поддержка встроена
rosetta
Редактирование
констант через
админку
+
localeurl
Переключаем языки
через URL path:
http://example.com/en/
2. Джентльменский набор приложений
1. Читать сайт на родном языке (I18N, L10n)
2. Джентльменский набор приложений
2. Быстро и просто наполнять контент (Admin)
Рост
2. Джентльменский набор приложений
2. Быстро и просто наполнять контент (Admin)
TinyMCE
Кроссбраузерный RTE
редактор, который все
знают
Подходит для простых
людей
Markitup
Создание Rich Text при
помощи языка разметки:
Html, Textile, Wiki Syntax,
Markdown, BBcode
Лучше для нас, IT-
шников, блоггеров
OR
2. Джентльменский набор приложений
2. Быстро и просто наполнять контент (Admin)
FileBrowser
+ полноценная медиа-библиотека
+ интеграция с TinyMCE
+ работа с изображениями
(thumbnails, ...)
2. Джентльменский набор приложений
2. Быстро и просто наполнять контент (Admin)
admin-tools
Как выглядит Django
admin без admin-tools
2. Джентльменский набор приложений
2. Быстро и просто наполнять контент (Admin)
admin-tools
Включаем!
Что мы получили:
+ стиль заказчика
+ расположение элементов
+ работы на час
2. Джентльменский набор приложений
2. Быстро и просто наполнять контент (Admin)
admin-tools
+ стиль заказчика
+ расположение элементов
+ работа на час
Советуем!
grappelli
+ упор на доп. ф-ции
для apps
- больше нет dashboard
- путаница с TinyMCE
VS
2. Джентльменский набор приложений
3.Найти нужную информацию (поиск, теги)
2. Джентльменский набор приложений
2. Быстро и просто наполнять контент (Admin)
django-haystack
Haystack -
унифицированное API для
различных full-search
провайдеров (Solr, Whoosh,
Xapian
whoosh
Whoosh - pure-python
search engine
Советуем!
+
2. Джентльменский набор приложений
2. Быстро и просто наполнять контент (Admin)
django-haystack
Haystack -
унифицированное API для
различных full-search
провайдеров (Solr, Whoosh,
Xapian
django-tagging
Добавление тагов к
любым моделям
whoosh
Whoosh - pure-python
search engine
Советуем!
+
2. Джентльменский набор приложений
4. Еще много чего (twitter, RSS, регистрация, ...)
Леха
2. Джентльменский набор приложений
Вывод
Гибкость + экономия времени
Проверено на нашем опыте.
Полезный ресурс!
http://djangopackages.com/
Развертывание и
поддержка
Рост
3. Развертывание и поддержка
Что нам нужно для полного счастья?
1. Производительность (само собой)
2. Надежность (чтоб клиенты по ночам не звонили)
3. Легкость развертывания новых проектов (желательно одним
движением)
4. Легкость поддержки и обновления (а что если у нас будет
не 3 проекта, а 50??)
Развертывание
мультипроектного
окружения (хостинг)
Леха
3. Развертывание и поддержка
Развертывание мультипроектного окружения
Версия 1. С чего мы начинали
3. Развертывание и поддержка
Развертывание мультипроектного окружения
Версия 2. Уже лучше....
3. Развертывание и поддержка
Развертывание мультипроектного окружения
Версия 2. Уже лучше....
+ производительность + надежность + легкость обновления
Поддержка
3. Поддержка
Обновления БД
Начинали
django-evolution
+ простота
- нет конроля за версиями
- не работает в сложных случаях
- поддержка third party apps
Пришли к
south
+ версионирование изменений
+ возможность сложных миграций
+ де-факто стандарт
- больше времени на изучение
Советуем!
3. Развертывание и поддержка
Окружение проекта
virtualenv + pip
Кстати, "pip require" - re-usable список приложений к установке - очень удобно!
Рост
3. Развертывание и поддержка
Окружение проекта
3. Поддержка
Что если вышел новый Django?
...а раньше мы
копировали новый
Django в корень
проекта
3. Поддержка
Что если вышло новое приложение?
Пока-что мы храним все приложения
внутри каждого проекта
(через svn:externals)
со всеми вытекающими радостями!
3. Поддержка
Что если стороннее приложение повреждено?
• Скачиваем trunk-версию (не помогло?)
• Пишем разработчикам баг (и это не помогло?)
• Сами делаем заплатку (крайний случай) + высылаем patch
разработчикам
... и помним о ней!
Доклад завершён!
Леха + Рост
Время вопросов
Мы надеемся, что это была
полезная пища для мозга
Спасибо за внимание!
Rostislav Bryzgunov
E-Mail: rostislav.bryzgunov@webriders.com.ua
Skype: rostislav.brizgunov
LinkedIn: rbrizgunov
Habrahabr: kottenator
Olexiy Strashko
E-Mail: olexiy.strashko@webriders.com.ua
Skype: strashko.olexiy
LinkedIn: olexiystrashko

More Related Content

Django. Web project full circle

  • 1. Web Project Full Circle Rostislav Bryzgunov E-Mail: rostislav.bryzgunov@webriders.com.ua Skype: rostislav.brizgunov LinkedIn: rbrizgunov Habrahabr: kottenator Olexiy Strashko E-Mail: olexiy.strashko@webriders.com.ua Skype: strashko.olexiy LinkedIn: olexiystrashko
  • 2. Вступление * Кто мы? ** мы - студия WebRiders, делаем сайты на Django * Почему Django? ** потому что он очень хорош * О чём пойдёт речь? ** полный цикл разработки проекта ** типичные задачи и их решение ** развёртка и поддержка ** делимся опытом и результатами
  • 3. Вступление Наша цель: * Популяризировать Django * Поделиться своим живым опытом Для кого доклад: * Начинающие Django-разработчики * Те, кто ещё не начал, но хочет * Те, кто уже начал, да не на том Ростик
  • 5. Структура проекта Об этом мало информации, как будто всё просто и понятно. Мы искали и почти ничего не нашли
  • 6. 1. Структура проекта Старт проекта # новый чистенький проект $ django-admin.py startproject Zakzak
  • 7. 1. Структура проекта Первые приложения # наши первые приложения $ manage.py startapp myapp # и начали плодиться папки в корне...
  • 8. 1. Структура проекта Дальше - больше # медиа, шаблоны, сторонние приложения - всё сюда же
  • 9. 1. Структура проекта Выделяем приложения # изолируем django apps # ... и библиотеки Леха
  • 10. 1. Структура проекта media, static & source # Медиа и статика - отдельно, исходный код - отдельно! # ... и мы говорим "НЕТ!" директории "templates/"
  • 11. 1. Структура проекта settings.py - теперь в пакете! # Проект растёт, settings.py "загрязняются", # что затрудняет создание новых проектов... Поэтому:
  • 12. 1. Структура проекта Результат Результат - небольшой open-source проект - Django Template Project: http://bitbucket.org/webriders/django-template-project/ Пришло время для вопросов (по первой части)
  • 14. 2. Джентльменский набор приложений Что обычно нужно посетителям наших сайтов? и что хорошо бы использовать готовое а не выдумывать велосипед 1. Читать сайт на родном языке (I18N, L10n) 2. Быстро и просто наполнять контент (Admin) 3. Найти нужную информацию (поиск, теги) 4. Еще много чего (Twitter, RSS, регистрация, ...)
  • 15. 2. Джентльменский набор приложений 1. Читать сайт на родном языке (I18N, L10n)
  • 16. 2. Джентльменский набор приложений 1. Читать сайт на родном языке (I18N, L10n) django-multilingual Хранение: - дополнительная таблица переводов Оценка: + переводы в отдельных таблицах + {{ title_any }} - быстродействие - сложность поддержки - поддержка South - изменение models.py django-modeltranslation Хранение: - добавление полей: title_en, title_ru... Оценка: + скорость + простота + models.py - не меняется + поддержка South + развитие проекта Советуем! VS
  • 17. 2. Джентльменский набор приложений 1. Читать сайт на родном языке (I18N, L10n) gettext Стандартная, проверенная временем библиотека. Django одобряет, поддержка встроена rosetta Редактирование констант через админку + localeurl Переключаем языки через URL path: http://example.com/en/
  • 18. 2. Джентльменский набор приложений 1. Читать сайт на родном языке (I18N, L10n)
  • 19. 2. Джентльменский набор приложений 2. Быстро и просто наполнять контент (Admin) Рост
  • 20. 2. Джентльменский набор приложений 2. Быстро и просто наполнять контент (Admin) TinyMCE Кроссбраузерный RTE редактор, который все знают Подходит для простых людей Markitup Создание Rich Text при помощи языка разметки: Html, Textile, Wiki Syntax, Markdown, BBcode Лучше для нас, IT- шников, блоггеров OR
  • 21. 2. Джентльменский набор приложений 2. Быстро и просто наполнять контент (Admin) FileBrowser + полноценная медиа-библиотека + интеграция с TinyMCE + работа с изображениями (thumbnails, ...)
  • 22. 2. Джентльменский набор приложений 2. Быстро и просто наполнять контент (Admin) admin-tools Как выглядит Django admin без admin-tools
  • 23. 2. Джентльменский набор приложений 2. Быстро и просто наполнять контент (Admin) admin-tools Включаем! Что мы получили: + стиль заказчика + расположение элементов + работы на час
  • 24. 2. Джентльменский набор приложений 2. Быстро и просто наполнять контент (Admin) admin-tools + стиль заказчика + расположение элементов + работа на час Советуем! grappelli + упор на доп. ф-ции для apps - больше нет dashboard - путаница с TinyMCE VS
  • 25. 2. Джентльменский набор приложений 3.Найти нужную информацию (поиск, теги)
  • 26. 2. Джентльменский набор приложений 2. Быстро и просто наполнять контент (Admin) django-haystack Haystack - унифицированное API для различных full-search провайдеров (Solr, Whoosh, Xapian whoosh Whoosh - pure-python search engine Советуем! +
  • 27. 2. Джентльменский набор приложений 2. Быстро и просто наполнять контент (Admin) django-haystack Haystack - унифицированное API для различных full-search провайдеров (Solr, Whoosh, Xapian django-tagging Добавление тагов к любым моделям whoosh Whoosh - pure-python search engine Советуем! +
  • 28. 2. Джентльменский набор приложений 4. Еще много чего (twitter, RSS, регистрация, ...) Леха
  • 29. 2. Джентльменский набор приложений Вывод Гибкость + экономия времени Проверено на нашем опыте. Полезный ресурс! http://djangopackages.com/
  • 31. 3. Развертывание и поддержка Что нам нужно для полного счастья? 1. Производительность (само собой) 2. Надежность (чтоб клиенты по ночам не звонили) 3. Легкость развертывания новых проектов (желательно одним движением) 4. Легкость поддержки и обновления (а что если у нас будет не 3 проекта, а 50??)
  • 33. 3. Развертывание и поддержка Развертывание мультипроектного окружения Версия 1. С чего мы начинали
  • 34. 3. Развертывание и поддержка Развертывание мультипроектного окружения Версия 2. Уже лучше....
  • 35. 3. Развертывание и поддержка Развертывание мультипроектного окружения Версия 2. Уже лучше.... + производительность + надежность + легкость обновления
  • 37. 3. Поддержка Обновления БД Начинали django-evolution + простота - нет конроля за версиями - не работает в сложных случаях - поддержка third party apps Пришли к south + версионирование изменений + возможность сложных миграций + де-факто стандарт - больше времени на изучение Советуем!
  • 38. 3. Развертывание и поддержка Окружение проекта virtualenv + pip Кстати, "pip require" - re-usable список приложений к установке - очень удобно! Рост
  • 39. 3. Развертывание и поддержка Окружение проекта
  • 40. 3. Поддержка Что если вышел новый Django? ...а раньше мы копировали новый Django в корень проекта
  • 41. 3. Поддержка Что если вышло новое приложение? Пока-что мы храним все приложения внутри каждого проекта (через svn:externals) со всеми вытекающими радостями!
  • 42. 3. Поддержка Что если стороннее приложение повреждено? • Скачиваем trunk-версию (не помогло?) • Пишем разработчикам баг (и это не помогло?) • Сами делаем заплатку (крайний случай) + высылаем patch разработчикам ... и помним о ней!
  • 44. Время вопросов Мы надеемся, что это была полезная пища для мозга
  • 45. Спасибо за внимание! Rostislav Bryzgunov E-Mail: rostislav.bryzgunov@webriders.com.ua Skype: rostislav.brizgunov LinkedIn: rbrizgunov Habrahabr: kottenator Olexiy Strashko E-Mail: olexiy.strashko@webriders.com.ua Skype: strashko.olexiy LinkedIn: olexiystrashko