Одна из неочевидных, но очень сильных сторон Django в том, что он заставляет проектировать веб-приложение правильно. В основном путем отказа включения в фреймворк вещей, которые слишком легко использовать неправильно.
Один из ярких примеров — отказ включать "поддержку ajax". Я взял это в кавычки, потому что это оксюморон: ajax не нуждается ни в какой особенной поддержке со стороны серверного кода. В подавляющем большинстве случаев, когда люди просят такую поддержку, они имеют в виду "я не знаю javascript, поэтому хочу чтобы фреймворк сделал все за меня". И несмотря на то, что это, наверное, хорошая цель сама по себе, на данный исторический момент это скорее всего выльется в то, что рано или поздно разработчик столкнется с тем, что автоматически сгенерированный javascript либо работает не так, как надо, либо не работает вообще.
Другой пример нашел только что в рассылке: некто написал middleware для вызова Django'вских view из приложения на Flash. Первые же два отзыва — "this is great!"
Почему-то я уверен, что ни один из тех людей, которые пойдут это использовать, потому что "this is great!", не будет задумываться, что сама идея полного, не регулируемого контроллером доступа к внутренней логике прямо из презентационного кода нарушает модель работы веба как таковую. Я не говорю, что так никогда нельзя делать, но это тот случай, когда надо четко себе представлять, как работает HTTP, как не поломать кеширование, кнопку "Назад", занесение закладок... Но скорее всего из этого получится очередной "монстрик", слепленный из самых модных трехбуквенных сокращений, который будет бесполезен, и которого невозможно развивать без полного переписывания кода.
Я надеюсь, что такая штука не попадет в официальный пакет приложений Django.
Комментарии: 12
Вы правы, Иван. Для таких вещей, как ajax есть свои фреймворки: YUI или Django
greg, оговорка прям по Фрейду. Наверное, имелось ввиду dojo?
Согласен, но с оговорками. Некоторые приложения изначально предпологают работу с AJAX и, естественно, поддержка этой возможности со стороны сервера естественна. К пимеру Divmod'овская Athena. При запросе клиента к активной странице, Nevow (это фреймворк Divmod) создает экземпляр класса (реализующий функционал активной страницы), который существует до тех пор, пока клиент в этом заинтересован (открыта страница или нет иного прерывания связи).
..bw
В особенной не нуждается, но, например, не мешало
бы IMHO добавить стандартную библиотеку для JSON
прямо в Django. Что-нить типа JOSN_Response(object).
По поводу генерации автоматического JavaScript
кода из питона. Во-первых есть совсем не плохой
проект pype с его javascript backend. Во-вторых JS2
очень сильно приближает JS к питону. С таким же
успехом можно предлагать не использовать С++ а
писать асме т.к. например под винду MSVC компилер
иногда очень сильно грешит. Ошибки возможно будут, но
скорее, я думаю, что-нить типа pycheker заточат,
что-бы он проверял насколько выданный питон код
может быть адекватно преобразован в JS.
Место про flash вообще не понял ((.
Причем там закладки,назад-вперед? Во flash ничего
этого и так не работает. И не будет. Знать "как
работает HTTP" для этого вообще не нужно - ровно как и
при написании AJAX приложений, ну а над кешированием
промежут. данных ни flash ни Ajax вообще никогда не
заморачивались. Пусть делают как могут - если оно
будет нужно потом доведут до ума кэширование.