Turbogears 2 vs Django - есть ли советы по выбору замены для Turbogears 1?

Я использую Turbogears 1 для создания прототипов небольших сайтов в течение последних нескольких лет, и он становится немного длиннее. Есть какие-нибудь предложения по переходу на Turbogears 2 или переходу на что-то вроде Django? Я разрываюсь между знакомством сообщества TG, которое довольно отзывчиво и делает довольно хорошую документацию против гораздо большего сообщества, использующего Django. Я весьма соблазнен встроенными функциями CMS и поддержкой Google AppEngine.

Любой совет?

Спасибо

.М.

7 ответов

Решение

У меня есть опыт работы как с Django, так и с TG1.1.

IMO, сильной стороной TurboGears является то, что это ORM: SQLAlchemy. Я предпочитаю TurboGears, когда дела с базой данных нетривиальны.

ORM у Django просто не такой гибкий и мощный.

При этом я предпочитаю Джанго. Если схема базы данных хорошо подходит для ORM в Django, я бы выбрал Django.

По моему опыту, использовать Django проще, чем TurboGears.

TG2 построен на вершине Pylons, который также имеет довольно большое сообщество. TG стал быстрее по сравнению с TG1 и включает механизм кэширования для каждого метода (не только веб-страниц). Я думаю, что он более дружественен к AJAX, чем Django, так как страницы могут быть легко опубликованы в HTML или JSON .

Обновление 2011: после 3 лет раздутых фреймворков я счастливый пользователь http://bottlepy.org/

Я использую Django уже год, и когда я начинал, у меня не было опыта работы с Python или Django, и я нашел его очень интуитивно понятным в использовании.

Я создал ряд приложений для Google App Engine для любителей, используя Django, последняя из которых - CMS для моего сайта. Использование Django означало, что я смог кодировать намного быстрее и с гораздо меньшим количеством ошибок.

Я уверен, что вы читали множество сравнений между TurboGears и DJango в Интернете.

Но что касается вашего искушения в CMS и GAE, я действительно могу думать, что вы должны пойти по пути DJango. Проверьте это и решите сами.

Джанго с GAE

Джанго для CMS

Django ORM использует реализацию активных записей - вы увидите эту реализацию в большинстве ORM. В основном это означает, что каждая строка в базе данных напрямую отображается на объект в коде и наоборот. Каркасам ORM, таким как Django, не потребуется предварительно определять схему для использования свойств в коде. Вы просто используете их, так как фреймворк может "понять" структуру, взглянув на схему базы данных. Кроме того, вы можете просто сохранить запись в базе данных, так как она сопоставлена ​​с определенной строкой в ​​таблице.

SQLAlchemy использует реализацию Data Mapper. При использовании такого рода реализации существует разделение между структурой базы данных и структурой объектов (они не равны 1:1, как в реализации Active Record). В большинстве случаев вам придется использовать другой постоянный слой, чтобы поддерживать взаимодействие с базой данных (например, чтобы сохранить объект). Таким образом, вы не можете просто вызвать метод save(), как при использовании реализации Active Record (которая является мошенничеством), но, с другой стороны, вы не должны знать всю реляционную структуру в базе данных, чтобы функционировать, так как нет прямой связи между кодом и базой данных.

Так кто из них выиграет эту битву? Никто. Это зависит от того, чего вы пытаетесь достичь. Я считаю, что если ваше приложение в основном представляет собой приложение CRUD (создание, чтение, обновление, удаление), в котором нет жестких и сложных правил, применимых к отношениям между различными объектами данных, вам следует использовать реализацию Active Record (Django). Это позволит вам легко и быстро настроить MVP для вашего продукта без каких-либо хлопот. Если у вас много "бизнес-правил" и ограничений в ваших приложениях, вам может быть лучше с моделью Data Mapper, поскольку она не связывает вас и не заставляет вас думать строго, как Active Record.

У меня только один вопрос... Разрабатывается ли разрабатываемое вами приложение для социальных сетей или настраиваемой бизнес-логики?

Лично я считаю, что Django хорош для социальных сетей и пилонов / турбонагнетателей, если вы действительно хотите гибкости и никаких границ...

только мой 2с

TG2 кажется очень сложным и запутанным, даже если сделать что-то простое, например, страницу входа с множественными сообщениями об ошибках. Как расширить функциональность входа в Turbogears 2.1 Я думаю, это из-за несдержанности модульности...

Другие вопросы по тегам