Turbogears 2 против Django – какой совет по выбору замены Turbogears 1?
-
12-09-2019 - |
Вопрос
Я использую Turbogears 1 для прототипирования небольших сайтов последние пару лет, и он уже устарел.Есть ли какие-нибудь предложения по выбору между обновлением до Turbogears 2 или переходом на что-то вроде Django?Я разрываюсь между знакомством сообщества TG, которое довольно отзывчиво и делает довольно хорошую документацию, и гораздо более крупным сообществом, использующим Django.Меня очень соблазняют встроенные функции CMS и поддержка Google AppEngine.
Любой совет?
Спасибо
.М.
Решение
У меня есть опыт работы как с Django, так и с TG1.1.
ИМХО, сильная сторона TurboGears — это ORM:SQLАлхимия.Я предпочитаю 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.Ознакомьтесь с ними и решите сами.
TG2 кажется очень сложным и запутанным, даже если делать что-то простое, например, страницу входа с множеством сообщений об ошибках.Как расширить функциональность входа в Turbogears 2.1Думаю, это из-за неумеренности в модульности...
Django ORM использует реализацию активной записи — вы увидите эту реализацию в большинстве ORM.По сути, это означает, что каждая строка в базе данных напрямую сопоставляется с объектом в коде и наоборот.Платформы ORM, такие как Django, не требуют предварительного определения схемы для использования свойств в коде.Вы просто используете их, поскольку фреймворк может «понять» структуру, просматривая схему базы данных.Кроме того, вы можете просто сохранить запись в базе данных, поскольку она сопоставлена с определенной строкой в таблице.
SQLAlchemy использует реализацию Data Mapper. При использовании такой реализации существует разделение между структурой базы данных и структурой объектов (они не составляют 1:1, как в реализации Active Record).В большинстве случаев вам придется использовать другой уровень персистентности, чтобы продолжать взаимодействовать с базой данных (например, для сохранения объекта).Таким образом, вы не можете просто вызвать метод save(), как при использовании реализации Active Record (что является недостатком), но, с другой стороны, вашему коду не обязательно знать всю реляционную структуру в базе данных для функционирования. , так как между кодом и базой данных нет прямой связи.
Так кто из них победит в этой битве?Никто.Это зависит от того, чего вы пытаетесь достичь.Я считаю, что если ваше приложение в основном представляет собой приложение CRUD (создание, чтение, обновление, удаление), в котором нет жестких и сложных правил, которые нужно применять к отношениям между различными объектами данных, вам следует использовать реализацию Active Record (Django).Это позволит вам легко и быстро настроить MVP для вашего продукта без каких-либо хлопот.Если в ваших приложениях много «бизнес-правил» и ограничений, возможно, вам лучше подойдет модель Data Mapper, поскольку она не будет связывать вас и заставлять мыслить строго, как это делает Active Record.
У меня есть только одно question...is приложение, которое вы разрабатываете, ориентировано на социальные сети или настроено на бизнес-логику?
Лично я считаю, что Django хорош для социальных сетей и pylons / turbogears, если вы действительно хотите гибкости и отсутствия границ...
только мой 2с