SlideShare une entreprise Scribd logo
1  sur  45
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

Contenu connexe

Tendances

Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»  Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов» Badoo Development
 
#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентовNikolay Samokhvalov
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6Nikolay Samokhvalov
 
Rigf2012 lyamin ANYONYMOUS uncovered
Rigf2012 lyamin ANYONYMOUS uncoveredRigf2012 lyamin ANYONYMOUS uncovered
Rigf2012 lyamin ANYONYMOUS uncoveredAlexander Lyamin
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовYandex
 
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует GoArtem Kovardin
 
Поддержка пользователей силами Community (Влад Животнев, Ubuntu Loco Team)
Поддержка пользователей силами Community (Влад Животнев, Ubuntu Loco Team)Поддержка пользователей силами Community (Влад Животнев, Ubuntu Loco Team)
Поддержка пользователей силами Community (Влад Животнев, Ubuntu Loco Team)PingWin Software
 
Database First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДDatabase First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДNikolay Samokhvalov
 
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...Yandex
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовYandex
 
Go для python-программистов
Go для python-программистовGo для python-программистов
Go для python-программистовKonstantin Cherkasov
 
Асинхронные задачи в iFunny v2 [Стачка 2014]
Асинхронные задачи в iFunny v2 [Стачка 2014]Асинхронные задачи в iFunny v2 [Стачка 2014]
Асинхронные задачи в iFunny v2 [Стачка 2014]Anton Hack Sergeev
 
Ailuropoda melanoleuca: Google Panda в Украине
Ailuropoda melanoleuca: Google Panda в УкраинеAiluropoda melanoleuca: Google Panda в Украине
Ailuropoda melanoleuca: Google Panda в УкраинеNetpeak
 
Артефакты эффективных SEOшников
Артефакты эффективных SEOшниковАртефакты эффективных SEOшников
Артефакты эффективных SEOшниковPlaytini
 
26.03.19 Collaborator.pro Webinar Эффективные паттерны выбора доноров
26.03.19 Collaborator.pro Webinar Эффективные паттерны выбора доноров26.03.19 Collaborator.pro Webinar Эффективные паттерны выбора доноров
26.03.19 Collaborator.pro Webinar Эффективные паттерны выбора доноровVladislav Morgun
 

Tendances (18)

Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»  Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
 
#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
 
Rigf2012 lyamin ANYONYMOUS uncovered
Rigf2012 lyamin ANYONYMOUS uncoveredRigf2012 lyamin ANYONYMOUS uncovered
Rigf2012 lyamin ANYONYMOUS uncovered
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
 
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует Go
 
Поддержка пользователей силами Community (Влад Животнев, Ubuntu Loco Team)
Поддержка пользователей силами Community (Влад Животнев, Ubuntu Loco Team)Поддержка пользователей силами Community (Влад Животнев, Ubuntu Loco Team)
Поддержка пользователей силами Community (Влад Животнев, Ubuntu Loco Team)
 
Database First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДDatabase First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБД
 
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
 
Go для python-программистов
Go для python-программистовGo для python-программистов
Go для python-программистов
 
Асинхронные задачи в iFunny v2 [Стачка 2014]
Асинхронные задачи в iFunny v2 [Стачка 2014]Асинхронные задачи в iFunny v2 [Стачка 2014]
Асинхронные задачи в iFunny v2 [Стачка 2014]
 
SECON'2014 - Сергеев Антон - Асинхронные задачи в iFunny
SECON'2014 - Сергеев Антон - Асинхронные задачи в iFunnySECON'2014 - Сергеев Антон - Асинхронные задачи в iFunny
SECON'2014 - Сергеев Антон - Асинхронные задачи в iFunny
 
Ailuropoda melanoleuca: Google Panda в Украине
Ailuropoda melanoleuca: Google Panda в УкраинеAiluropoda melanoleuca: Google Panda в Украине
Ailuropoda melanoleuca: Google Panda в Украине
 
Артефакты эффективных SEOшников
Артефакты эффективных SEOшниковАртефакты эффективных SEOшников
Артефакты эффективных SEOшников
 
26.03.19 Collaborator.pro Webinar Эффективные паттерны выбора доноров
26.03.19 Collaborator.pro Webinar Эффективные паттерны выбора доноров26.03.19 Collaborator.pro Webinar Эффективные паттерны выбора доноров
26.03.19 Collaborator.pro Webinar Эффективные паттерны выбора доноров
 
moscowpm-perlevents
moscowpm-perleventsmoscowpm-perlevents
moscowpm-perlevents
 
Golang
GolangGolang
Golang
 

Similaire à Django. Web project full circle

Django. Web project full circle
Django. Web project full circleDjango. Web project full circle
Django. Web project full circlewebriders
 
Python-технология которую легко продавать!
Python-технология которую легко продавать!Python-технология которую легко продавать!
Python-технология которую легко продавать!Aleksey Nakorenko
 
Практика оптимизации сайтов на незнакомых языках
Практика оптимизации сайтов на незнакомых языкахПрактика оптимизации сайтов на незнакомых языках
Практика оптимизации сайтов на незнакомых языкахNetpeak
 
Кутас Иван. Практика оптимизации сайтов на незнакомых языках bdd2017
Кутас Иван. Практика оптимизации сайтов на незнакомых языках bdd2017Кутас Иван. Практика оптимизации сайтов на незнакомых языках bdd2017
Кутас Иван. Практика оптимизации сайтов на незнакомых языках bdd2017Дмитрий Шахов
 
Python Meetup
Python Meetup Python Meetup
Python Meetup iQSpace
 
Continuous deployment Smartling event
Continuous deployment Smartling eventContinuous deployment Smartling event
Continuous deployment Smartling eventViktoriya Pridatko
 
Continuous Deployment (in Russian)
Continuous Deployment  (in Russian)Continuous Deployment  (in Russian)
Continuous Deployment (in Russian)Smartling
 
Сергей Белов
Сергей БеловСергей Белов
Сергей БеловCodeFest
 
Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, SkypeOntico
 
Хранилище данных Avito: аналитика для микросервисной архитектуры / Артем Дани...
Хранилище данных Avito: аналитика для микросервисной архитектуры / Артем Дани...Хранилище данных Avito: аналитика для микросервисной архитектуры / Артем Дани...
Хранилище данных Avito: аналитика для микросервисной архитектуры / Артем Дани...Ontico
 
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Fwdays
 
Алексей Рылко, iProspect — «SEO-инсайды, которые вы можете достать из логов ...
Алексей Рылко, iProspect  — «SEO-инсайды, которые вы можете достать из логов ...Алексей Рылко, iProspect  — «SEO-инсайды, которые вы можете достать из логов ...
Алексей Рылко, iProspect — «SEO-инсайды, которые вы можете достать из логов ...shevchuk_conf
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинOntico
 
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
 
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор Богатырёв
Обзор Drupal 8 by Andrei Khalipau, Kostya  Halipov and Егор БогатырёвОбзор Drupal 8 by Andrei Khalipau, Kostya  Halipov and Егор Богатырёв
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор БогатырёвMinsk PHP User Group
 
Продвижение по низкочастотным запросам - теория и практика
Продвижение по низкочастотным запросам - теория и практикаПродвижение по низкочастотным запросам - теория и практика
Продвижение по низкочастотным запросам - теория и практикаweb2win
 
Рациональный подход в СЕО: высокая конкуренция, большие списки, мультирегиона...
Рациональный подход в СЕО: высокая конкуренция, большие списки, мультирегиона...Рациональный подход в СЕО: высокая конкуренция, большие списки, мультирегиона...
Рациональный подход в СЕО: высокая конкуренция, большие списки, мультирегиона...Александр Алаев
 
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...Vladislav Morgun
 

Similaire à Django. Web project full circle (20)

Django. Web project full circle
Django. Web project full circleDjango. Web project full circle
Django. Web project full circle
 
Python-технология которую легко продавать!
Python-технология которую легко продавать!Python-технология которую легко продавать!
Python-технология которую легко продавать!
 
Практика оптимизации сайтов на незнакомых языках
Практика оптимизации сайтов на незнакомых языкахПрактика оптимизации сайтов на незнакомых языках
Практика оптимизации сайтов на незнакомых языках
 
Кутас Иван. Практика оптимизации сайтов на незнакомых языках bdd2017
Кутас Иван. Практика оптимизации сайтов на незнакомых языках bdd2017Кутас Иван. Практика оптимизации сайтов на незнакомых языках bdd2017
Кутас Иван. Практика оптимизации сайтов на незнакомых языках bdd2017
 
Sivko
SivkoSivko
Sivko
 
Python Meetup
Python Meetup Python Meetup
Python Meetup
 
Continuous deployment Smartling event
Continuous deployment Smartling eventContinuous deployment Smartling event
Continuous deployment Smartling event
 
Continuous Deployment (in Russian)
Continuous Deployment  (in Russian)Continuous Deployment  (in Russian)
Continuous Deployment (in Russian)
 
DevOps для 1С
DevOps для 1СDevOps для 1С
DevOps для 1С
 
Сергей Белов
Сергей БеловСергей Белов
Сергей Белов
 
Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, Skype
 
Хранилище данных Avito: аналитика для микросервисной архитектуры / Артем Дани...
Хранилище данных Avito: аналитика для микросервисной архитектуры / Артем Дани...Хранилище данных Avito: аналитика для микросервисной архитектуры / Артем Дани...
Хранилище данных Avito: аналитика для микросервисной архитектуры / Артем Дани...
 
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
 
Алексей Рылко, iProspect — «SEO-инсайды, которые вы можете достать из логов ...
Алексей Рылко, iProspect  — «SEO-инсайды, которые вы можете достать из логов ...Алексей Рылко, iProspect  — «SEO-инсайды, которые вы можете достать из логов ...
Алексей Рылко, iProspect — «SEO-инсайды, которые вы можете достать из логов ...
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей Шетухин
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"
 
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор Богатырёв
Обзор Drupal 8 by Andrei Khalipau, Kostya  Halipov and Егор БогатырёвОбзор Drupal 8 by Andrei Khalipau, Kostya  Halipov and Егор Богатырёв
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор Богатырёв
 
Продвижение по низкочастотным запросам - теория и практика
Продвижение по низкочастотным запросам - теория и практикаПродвижение по низкочастотным запросам - теория и практика
Продвижение по низкочастотным запросам - теория и практика
 
Рациональный подход в СЕО: высокая конкуренция, большие списки, мультирегиона...
Рациональный подход в СЕО: высокая конкуренция, большие списки, мультирегиона...Рациональный подход в СЕО: высокая конкуренция, большие списки, мультирегиона...
Рациональный подход в СЕО: высокая конкуренция, большие списки, мультирегиона...
 
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
15.03.19 WebPromo SEOday SEO-инсайты из логов: от WP блога до международного ...
 

Dernier (9)

Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 

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