Прежде чем рассказывать о моих впечатлениях от технологии наверное проще рассказать почему я вообще решил делать
проект на Django (ссылка ведет на анонс проекта), тем более после Plone, Zope3 и прочих разработок. Возможно кому-то покажется странным, но в первую очередь профессиональное любопытство. Все время перед глазами крутилась технология которая получила свой вес на рынке разработки, которую рекламирует Google и которая обновленным фениксом выходит в версии 1.0.
Интерес начался с понимания того, что объем кодовой базы Django находится в пределах понимания одним человеком. Некрасиво преоткрывать тайну, но корневые Plone разработчики понятия не имеют о технологии которую они используют. В один и тот же момент времени в основных библиотеках Plone которые выходят в финальных релизах используются разные подходы к решению одних и тех же задач в разных кусках кода. Простой пример когда какие-то тулзы хранят свои настройки в portal_properties, а какие-то в своих свойствах. Это сильно влияет на практику конечной реализации. Для меня это madness, просто
стоп! и устал, а хотелось посмотреть чего-то обладающего единой логикой.
С Django было ощущение, что код должен быть более стройным и аккуратным. Тоесть он находится в области пространства и времени когда соблюдаются следующие условия:
- Нет большой исторической ответственности по поддержке старых уже работающих проектов (об этом отдельно будет ниже)
- Код проекта достаточно мобилен для того чтобы следовать за рынком и превносить новые подходы, концепции и просто библиотеки
- У проекта уже достаточно "мяса на костях", чтобы не приходилось каждую элементарную вещь писать самому заново
Технология еще fun и уже не fail и еще не fail, правда тут начинается интересное НО. Об этом тоже будет позже.
Вот в такой интересный момент развития Django я и пришел подержать ее [технологию] в руках. На данный момент тут реализованы многие современные штуки и продукт получился целостным.
О чем честно говорят разработчики
Приятно когда тебя не воспринимают за идиота и приятно когда тебя предупреждают сразу. Так вот доки предупреждают сфере применения. С первых слов туториалы учат "у нас есть модель базы данных, у нас есть что-то вместо шаблонов, у вас есть сделанные из этого кубики вы можете их быстро положить рядом". Нет херни по поводу порталов, онлайн магазинов, сообществ и прочего. Вам честно говорят что вы получите и что это не будет какая-то бешенная мегатехнология от которой у клиента взорвутся глаза.
Приятно когда на себя берут обязательства и их выполняют. Документация обещает, что это будет быстро. Что вы сможете в расчитанные сроки сделать свою работу на том уровне качества которое сами поставите целью:
Django для перфекционистов с дедлайнами.
В общем так и есть. Если не брать в расчет время изучения, проект был сделан достаточно быстро и так как я этого хотел.
В чем заключается НО
В процессе статьи я дал две отсылки на это место:
- база существующих проектов и наследственность
- почему Django попадает в нишу длинной перспективы fun'а
Выбрав ограничения типа проектов для которых следует использовать фреймворк создатели хитрым образом уклонились от большого класса FAIL проектов. Вам не стоит использовать Django если:
- есть уже схема базы данных с плохой наследственностью
- на сайте нет десятков однообразных объектов
- ваша модель данных выходит за рамки возможной модели django
- сайт имеет высокую связность между модулями, или попросту присутствует влияние поведения состояния одних объектов на другие
- преобладание нединамического контента
Вы не будете долго эволюционировать свой проект если выберите django. Написали один раз, спустя какое-то время переписали заново. Быстрый задорный секс под xtc без обязательств. Если к вам пришел клиент с красивой идеей объединить 1С с сайтом... ну вы поняли. Так же нервно курят в сторонке сайты с 20ю страницами тупых рассуждений о миссии компании и разделом новости (таким будет
devcult.ru, lol)
Подстраивание под технологию это обоюдный процесс, из своего скучного проекта вы так же сможете получить фан если начнете его делать на Django.
Куда бежать галопом
И что же, теперь все сайты делать на Django? Отвечаю подробно для тех у кого своей головой не одарила природа. Для такий сумасшедших человеков как я всегда оказывается, что надо сделать что-то такое очень крутое, но Django не подходит для этой задачи.
У вас пропадет фан, начнет болеть живот и взрываться моск, но в реляционной модели данных этого сделать не получится. Все RDBMS - это бааальшой некрасивый костыль вместо ручек и ножек, до яблочка дотянуться получиться, но чтобы съесть надо чтобы костыль мог сгинаться в локтях, а чтобы прыгать до холодильника еще и в коленях.
У каждой технологии своя специализация.
Для завершения
Итак, что я еще не сделал:
- не вычитал исходный код Django, действовал по руководствам
- не изучил сообщения, похоже классная штука, но реально просто забил
- не пропробовал JSON, как уже говорил в комментариях к предыдущим постам для моих задач достаточно было отдавать HTML
И конечно, наибольшая благодарность выражается моей любимой кошке Тусе. Благодаря ее привычки спаст и фырчать у меня на коленях мне было так приятно читать документацию и кодить сайт. Я наверное очень хороший человек раз у меня есть такая хорошая кошка.