django. web project full circle

45
Web Project Full Circle Rostislav Bryzgunov E-Mail: [email protected] Skype: rostislav.brizgunov LinkedIn: rbrizgunov Habrahabr: kottenator Olexiy Strashko E-Mail: [email protected] Skype: strashko.olexiy LinkedIn: olexiystrashko

Upload: olexiy-strashko

Post on 28-Nov-2014

2.233 views

Category:

Technology


0 download

DESCRIPTION

How to organize solid web development process using Django. Includes: - project structure; - standard solutions for common problems; - hosting & support.

TRANSCRIPT

Page 1: Django. Web project full circle

Web Project Full Circle

Rostislav Bryzgunov

E-Mail: [email protected]:     rostislav.brizgunovLinkedIn:  rbrizgunovHabrahabr: kottenator

Olexiy Strashko

E-Mail: [email protected]:    strashko.olexiyLinkedIn: olexiystrashko

Page 2: Django. Web project full circle

Вступление

* Кто мы?    ** мы - студия WebRiders, делаем сайты на Django

* Почему Django?    ** потому что он очень хорош

* О чём пойдёт речь?    ** полный цикл разработки проекта    ** типичные задачи и их решение    ** развёртка и поддержка    ** делимся опытом и результатами

Page 3: Django. Web project full circle

Вступление

Наша цель:

* Популяризировать Django

* Поделиться своим живым опытом

Для кого доклад:

* Начинающие Django-разработчики

* Те, кто ещё не начал, но хочет

* Те, кто уже начал, да не на том

Ростик

Page 4: Django. Web project full circle

Наш доклад

Page 5: Django. Web project full circle

Структура проекта

Об этом мало информации, как будто всё просто и понятно. Мы искали и почти ничего не нашли

Page 6: Django. Web project full circle

1. Структура проекта

Старт проекта

# новый чистенький проект$ django-admin.py startproject Zakzak

Page 7: Django. Web project full circle

1. Структура проекта

Первые приложения

# наши первые приложения$ manage.py startapp myapp# и начали плодиться папки в корне...

Page 8: Django. Web project full circle

1. Структура проекта

Дальше - больше

# медиа, шаблоны, сторонние приложения - всё сюда же

Page 9: Django. Web project full circle

1. Структура проекта

Выделяем приложения

# изолируем django apps # ... и библиотеки

Леха

Page 10: Django. Web project full circle

1. Структура проекта

media, static & source

# Медиа и статика - отдельно, исходный код - отдельно!# ... и мы говорим "НЕТ!" директории "templates/"

Page 11: Django. Web project full circle

1. Структура проекта

settings.py - теперь в пакете!

# Проект растёт, settings.py "загрязняются",# что затрудняет создание новых проектов... Поэтому:

Page 12: Django. Web project full circle

1. Структура проекта

Результат

Результат - небольшой open-source проект - Django Template Project:

http://bitbucket.org/webriders/django-template-project/

Пришло время для вопросов (по первой части)

Page 13: Django. Web project full circle

Джентльменский набор приложений

Рост

Page 14: Django. Web project full circle

2. Джентльменский набор приложений

Что обычно нужно посетителям наших сайтов?

и что хорошо бы использовать готовое а не выдумывать велосипед

1. Читать сайт на родном языке (I18N, L10n)

2. Быстро и просто наполнять контент (Admin) 3. Найти нужную информацию (поиск, теги) 4. Еще много чего (Twitter, RSS, регистрация, ...) 

Page 15: Django. Web project full circle

2. Джентльменский набор приложений

1. Читать сайт на родном языке (I18N, L10n)

Page 16: Django. Web project full circle

2. Джентльменский набор приложений

1. Читать сайт на родном языке (I18N, L10n)

django-multilingual

Хранение: - дополнительная таблица переводов Оценка:

+ переводы в отдельных таблицах + {{ title_any }}- быстродействие- сложность поддержки- поддержка South- изменение models.py

django-modeltranslation

Хранение: - добавление полей: title_en, title_ru...

Оценка: + скорость + простота+ models.py - не меняется + поддержка South+ развитие проекта 

               Советуем!  

VS

Page 17: Django. Web project full circle

2. Джентльменский набор приложений

1. Читать сайт на родном языке (I18N, L10n)

gettext

Стандартная, проверенная временем библиотека.  

Django одобряет, поддержка встроена

rosetta Редактирование констант через админку

+

localeurl Переключаем языки через URL path:http://example.com/en/

Page 18: Django. Web project full circle

2. Джентльменский набор приложений

1. Читать сайт на родном языке (I18N, L10n)

Page 19: Django. Web project full circle

2. Джентльменский набор приложений

2. Быстро и просто наполнять контент (Admin)

Рост

Page 20: Django. Web project full circle

2. Джентльменский набор приложений

2. Быстро и просто наполнять контент (Admin)

TinyMCE

 Кроссбраузерный RTE редактор, который все знают  Подходит для простых людей

Markitup  Создание Rich Text при помощи языка разметки: Html, Textile, Wiki Syntax, Markdown, BBcode Лучше для нас, IT-шников, блоггеров

OR 

Page 21: Django. Web project full circle

2. Джентльменский набор приложений

2. Быстро и просто наполнять контент (Admin)

FileBrowser

 + полноценная медиа-библиотека+ интеграция с TinyMCE+ работа с изображениями\ (thumbnails, ...)

Page 22: Django. Web project full circle

2. Джентльменский набор приложений

2. Быстро и просто наполнять контент (Admin)

admin-tools

 Как выглядит Django admin без admin-tools

  

Page 23: Django. Web project full circle

2. Джентльменский набор приложений

2. Быстро и просто наполнять контент (Admin)

admin-tools

 Включаем!

Что мы получили:+ стиль заказчика+ расположение элементов + работы на час

  

Page 24: Django. Web project full circle

2. Джентльменский набор приложений

2. Быстро и просто наполнять контент (Admin)

admin-tools

 + стиль заказчика+ расположение элементов + работа на час 

     Советуем!

grappelli

 + упор на доп. ф-ции    для apps- больше нет dashboard- путаница с TinyMCE

VS

Page 25: Django. Web project full circle

2. Джентльменский набор приложений

3.Найти нужную информацию (поиск, теги)

Page 26: Django. Web project full circle

2. Джентльменский набор приложений

2. Быстро и просто наполнять контент (Admin)

django-haystack

 Haystack - унифицированное API для различных full-search провайдеров (Solr, Whoosh, Xapian  

whoosh

 Whoosh - pure-python search engine

Советуем!

+

Page 27: Django. Web project full circle

2. Джентльменский набор приложений

2. Быстро и просто наполнять контент (Admin)

django-haystack

 Haystack - унифицированное API для различных full-search провайдеров (Solr, Whoosh, Xapian  

django-tagging  Добавление тагов к любым моделям

whoosh

 Whoosh - pure-python search engine

Советуем!

+

Page 28: Django. Web project full circle

2. Джентльменский набор приложений

4. Еще много чего (twitter, RSS, регистрация, ...)

Леха

Page 29: Django. Web project full circle

2. Джентльменский набор приложений

Вывод

Гибкость + экономия времениПроверено на нашем опыте. 

Полезный ресурс! 

http://djangopackages.com/  

Page 30: Django. Web project full circle

Развертывание и поддержка

Рост

Page 31: Django. Web project full circle

3. Развертывание и поддержка

Что нам нужно для полного счастья?

1. Производительность (само собой) 2. Надежность (чтоб клиенты по ночам не звонили)

3. Легкость развертывания новых проектов (желательно одним движением)

4. Легкость поддержки и обновления (а что если у нас будет не 3 проекта, а 50??)

Page 32: Django. Web project full circle

Развертывание мультипроектного окружения (хостинг) 

Леха

Page 33: Django. Web project full circle

3. Развертывание и поддержка

Развертывание мультипроектного окружения

Версия 1. С чего мы начинали

Page 34: Django. Web project full circle

3. Развертывание и поддержка

Развертывание мультипроектного окружения

Версия 2. Уже лучше....

Page 35: Django. Web project full circle

3. Развертывание и поддержка

Развертывание мультипроектного окружения

Версия 2. Уже лучше....

+ производительность   + надежность   + легкость обновления

Page 36: Django. Web project full circle

Поддержка

Page 37: Django. Web project full circle

3. Поддержка

Обновления БД

Начинали

django-evolution

+ простота  - нет конроля за версиями- не работает в сложных случаях - поддержка third party apps

Пришли к

south

+ версионирование изменений+ возможность сложных миграций+ де-факто стандарт - больше времени на изучение

Советуем!

Page 38: Django. Web project full circle

3. Развертывание и поддержка

Окружение проекта

virtualenv + pip

Кстати, "pip require" - re-usable список приложений к установке - очень удобно!

Рост

Page 39: Django. Web project full circle

3. Развертывание и поддержка

Окружение проекта

Page 40: Django. Web project full circle

3. Поддержка

Что если вышел новый Django?

...а раньше мы копировали новый Django в корень проекта

Page 41: Django. Web project full circle

3. Поддержка

Что если вышло новое приложение?

Пока-что мы храним все приложения внутри каждого проекта 

(через svn:externals)

со всеми вытекающими радостями!

Page 42: Django. Web project full circle

3. Поддержка

Что если стороннее приложение повреждено?

• Скачиваем trunk-версию (не помогло?)• Пишем разработчикам баг (и это не помогло?)• Сами делаем заплатку (крайний случай) + высылаем patch

разработчикам

... и помним о ней!

Page 43: Django. Web project full circle

Доклад завершён!

Леха + Рост

Page 44: Django. Web project full circle

Время вопросов

Мы надеемся, что это была полезная пища для мозга

Page 45: Django. Web project full circle

Спасибо за внимание!

Rostislav Bryzgunov

E-Mail:    [email protected]:     rostislav.brizgunovLinkedIn:  rbrizgunovHabrahabr: kottenator

  Olexiy Strashko

E-Mail:   [email protected]:    strashko.olexiyLinkedIn: olexiystrashko