Django против других веб-фреймворков Python?

Я в значительной степени перепробовал все существующие веб-фреймворки Python, и мне потребовалось много времени, чтобы понять, что не существует фреймворка серебряной пули, у каждого из них есть свои преимущества и недостатки. Я начал с Snakelets, и мне очень понравилось, что я могу контролировать почти все на более низком уровне без особых усилий. возня, но потом я обнаружил TurboGears и с тех пор использую его (1.x). Такие инструменты, как Catwalk и веб-консоль, для меня бесценны.

Но с выходом TurboGears 2, который обеспечивает поддержку WSGI, и после прочтения религиозных дебатов между лагерями Django и WSGI, я действительно разрываюсь между "делать это правильно" < / strong>, например, изучение WSGI, трата драгоценного времени на написание функций, которые уже существуют в Django и других полнофункциональных фреймворках, в отличие от использования Django или какой-либо высокоуровневой структуры, которая все делает за меня. Недостатки последнего, которые я вижу, довольно очевидны:

  1. Я ничего не узнаю в процессе
  2. Если мне когда-нибудь понадобится сделать что-то более низкое, это будет боль
  3. Накладные расходы, необходимые только для базового сайта, использующего аутентификацию, безумны. (ИМО)

Итак, я предполагаю, что мой вопрос в том, что лучше, или это просто вопрос мнения, и должен ли я принять его и использовать Django, если он достигнет того, что я хочу, с минимальной суетой (мне нужна аутентификация и интерфейс CRUD для моя база данных)? Я пробовал Werkzeug, Glashammer и друзей, но AuthKit и Repoze напугали меня, как и количество шагов, необходимых для простой настройки базовой аутентификации. Я посмотрел на Pylons, но документации, похоже, не хватает, и когда я ссылался на простые функции, такие как аутентификация или интерфейс CRUD, различные страницы вики и документация, казалось, противоречили друг другу, с разными хаками для версий и тому подобное.


Спасибо С. Лотту за то, что он указал, что я недостаточно ясен. Мой вопрос: что из следующего имеет смысл в долгосрочной перспективе, но безболезненно в краткосрочной перспективе (например, какая-то золотая середина, кто-нибудь?) - Изучить WSGI или придерживаться фреймворка с включенными батареями? В последнем случае я был бы признателен за предложение о том, стоит ли мне еще раз попробовать Django, придерживаться TurboGears 1.x или рискнуть перейти в какой-то другой фреймворк.

Кроме того, я пробовал CherryPy, но, похоже, не смог найти достаточно хорошее приложение CRUD, которое я мог бы сразу же установить и использовать.


person Community    schedule 31.03.2009    source источник
comment
Не могли бы вы прояснить свой вопрос. какой из вариантов лучше? Django против TurboGears 1 против TurboGears 2? Уточните, пожалуйста, чтобы мы знали, о чем вы действительно просите и какая помощь вам действительно нужна.   -  person S.Lott    schedule 31.03.2009


Ответы (13)


Предлагаю еще раз взглянуть на TG2. Я думаю, что люди не заметили некоторых успехов, достигнутых с момента выхода последней версии. Помимо растущего стека доступных утилит WSGI, есть еще немало вещей, специфичных для TG2. Вот пара основных моментов:

Система администрирования TurboGears. Этот интерфейс CRUD для вашей базы данных полностью настраивается с помощью декларативный класс конфигурации. Он также интегрирован с Dojo, чтобы предоставить вам бесконечно прокручиваемые таблицы. Проверка на стороне сервера также автоматизирована. Интерфейс администратора использует URL-адреса RESTful и HTTP-команды, что означает, что к нему будет легко подключиться программно, используя отраслевые стандарты.

CrudRestController / RestController - TurboGears предоставляет структурированный способ обработки сервисов в вашем контроллере. Предоставляя вам возможность использовать стандартизированные HTTP-команды, просто расширив наш RestController. Объедините Sprox с CrudRestController, и вы сможете разместить crud в любом месте своего приложения с полностью настраиваемыми автоматически генерируемыми формами. TurboGears теперь поддерживает mime-типы в качестве расширений файлов в URL-адресе, поэтому ваш контроллер может отображать .json и .xml с тем же интерфейсом, который он использует для визуализации html (возвращая словарь из контроллера)

Если вы щелкнете по ссылкам, вы увидите, что у нас есть новый набор документации, созданный с помощью sphinx, который является более обширным, чем документы прошлого.

С лучшим веб-сервером, ORM и система шаблонов (выберите свою) под капотом, легко понять, почему TG имеет смысл для людей, которые хотят работать быстро и при этом сохранять масштабируемость по мере роста своего сайта.

TurboGears часто рассматривается как попытка поразить движущуюся цель, но мы единообразны в выпусках, а это означает, что вам не придется беспокоиться о работе из магистрали, чтобы получить новейшие функции, которые вам нужны. В будущее: больше расширений TurboGears, которые позволят вашему приложению расширить функциональность с помощью простых команд пастера.

person Community    schedule 31.03.2009
comment
технически у меня не было проблем с Turbogears. Но я нашел сообщество элитарным и менее полезным для новичков, чем Rails / Django / web2py. - person hoju; 26.11.2011

религиозные дебаты между лагерями Django и WSGI

Может показаться, что вы немного запутались в том, что такое WSGI и что такое Django. Сказать, что Django и WSGI конкурируют, это все равно что сказать, что C и SQL конкурируют: вы сравниваете яблоки и апельсины.

Django - это фреймворк, WSGI - это протокол (который поддерживается Django) для взаимодействия сервера с фреймворком. Что наиболее важно, обучение прямому использованию WSGI немного похоже на обучение сборке. Это отличный опыт обучения, но на самом деле это не то, что вам следует делать для производственного кода (да и не предполагалось).

Во всяком случае, мой совет - разберитесь в этом сами. В большинстве фреймворков есть упражнение типа «сделайте вики / блог / опрос за час». Потратьте немного времени на каждую и выясните, какая из них вам больше нравится. В конце концов, как вы можете выбирать между разными фреймворками, если вы не хотите их опробовать?

person Jason Baker    schedule 31.03.2009

Я бы сказал, что вы слишком пессимистично относитесь к тому, что «ничего не изучаете» с помощью Django или аналогичной полнофункциональной платформы, и недооцениваете ценность документации и большого сообщества. Даже с Django еще предстоит немало обучения; и если он не делает все, что вы хотите, это не значит, что код фреймворка непроницаем.

Немного личного опыта: я потратил годы, время от времени, возясь с Twisted / Nevow, TurboGears и некоторыми другими веб-фреймворками Python. Я так и не закончил ничего, потому что код фреймворка постоянно был незавершенным и переписывался подо мной, документация часто отсутствовала или была неправильной, и единственная жизнеспособная поддержка была через IRC (где я часто получал отличный совет, но чувствовал, что я навязываю, если я тоже спрашиваю много вопросов).

Для сравнения, за последние пару лет я отключил несколько сайтов с помощью Django. В отличие от моего предыдущего опыта, они фактически развернуты и работают. Процесс разработки Django может быть медленным и осторожным, но он приводит к гораздо меньшему количеству битрота и устаревания, а также к действительно полезной документации.

Поддержка HTTP-аутентификации для Django наконец-то появилась несколько недель назад, если вы об этом в №3.

person Nicholas Riley    schedule 31.03.2009
comment
Как вы сравниваете repoze.bfg с точки зрения документации, поддержки, доработки и т. Д.? - person Sridhar Ratnakumar; 04.10.2009

Кажется, ваш вопрос заключается в том, «стоит ли изучать WSGI и делать все самостоятельно» или использовать «полнофункциональную структуру, которая все делает за вас».

Я бы сказал, что это ложная дихотомия и есть очевидный третий путь. TurboGears 2 пытается обеспечить плавный путь от фреймворка стиля «все за вас» до понимания промежуточного программного обеспечения WSGI и возможности настраивать почти каждый аспект фреймворка в соответствии с потребностями вашего приложения.

Возможно, мы не добьемся успеха во всех местах и ​​на каждом уровне, но особенно если у вас уже есть опыт TurboGears 1, я думаю, что поначалу кривая обучения TG2 будет очень, очень простой, и у вас будет возможность углубиться именно тогда, когда вам это нужно.

Для решения ваших конкретных проблем:

  • Мы предоставляем готовую систему авторизации, которая соответствует той, к которой вы привыкли в TG1.
  • Мы предоставляем готовый интерфейс, похожий на «django admin», под названием tgext.admin, который отлично работает с dojo, чтобы сделать интерфейс по умолчанию похожим на электронную таблицу.

Я также хотел бы рассмотреть несколько других вариантов, которые существуют, и немного поговорить о преимуществах.

  • CherryPy. Я считаю, что CherryPy - отличный веб-сервер и красивый минималистичный веб-фреймворк. Он не основан на внутреннем WSGI, но имеет хорошую поддержку WSGI, хотя и не предоставит вам возможности «полного стека». Но для пользовательских настроек, которые должны быть быстрыми и не особенно подходящими для значений по умолчанию, предоставляемых Django или TurboGears, это отличное решение.

  • Django. Я думаю, что Django - очень хорошая, хорошо интегрированная система для разработки веб-сайтов. Если ваше приложение и стиль работы хорошо вписываются в стандартную настройку, это может быть фантастически. Однако, если вам нужно настроить использование вашей БД, заменить язык шаблонов, использовать другую модель авторизации пользователей или иным образом сделать что-то по-другому, вы, скорее всего, столкнетесь с борьбой с фреймворком.

  • Pylons Pylons вроде CherryPy - отличный минималистичный веб-фреймворк. В отличие от CherryPy, WSGI включен во всей системе и предоставляет некоторые разумные настройки по умолчанию, такие как SQLAlchemy и Mako, которые могут помочь вам хорошо масштабироваться. Новые официальные документы намного лучшего качества, чем старые вики-документы, которые вы, кажется, уже видели.

person Community    schedule 31.03.2009

Вы смотрели CherryPy. Он минималистичный, но эффективный и простой. Это достаточно низкий уровень, чтобы не мешать им, но достаточно высокий, чтобы скрыть сложность. Если я хорошо помню, TurboGears был построен на нем.

С CherryPy у вас есть выбор из чего угодно. (Фреймворк шаблонов, ORM, если нужно, серверная часть и т. Д.)

person Martin    schedule 31.03.2009

Изучите WSGI

WSGI абсурдно прост ... По сути, это функция, которая выглядит как ...

def application(environ, start_response) pass

Функция вызывается при получении HTTP-запроса. environ содержит различные данные (например, URI запроса и т. Д.), start_response - это вызываемая функция, используемая для установки заголовков.

Возвращаемое значение - это тело веб-сайта.

def application (Environment, start_response): start_response ("200 OK", []) return "..."

Вот и все, на самом деле ... Это не фреймворк, а скорее протокол для использования веб-фреймворками ..

Для создания сайтов использование WSGI - это не «правильный путь» - использование существующих фреймворков ... но, если вы пишете веб-фреймворк Python, то использование WSGI - абсолютно правильный путь.

Какой фреймворк вы используете (CherryPy, Django, TurboGears и т. Д.) - это в основном личные предпочтения. Поиграйте с каждым, посмотрите, какой вам больше всего нравится, а затем используйте его. По этому поводу есть вопрос StackOverflow (с отличным ответом), "Рекомендация для простых фреймворков Python"

person dbr    schedule 31.03.2009

Вы проверили web2py? После недавней оценки многих веб-фреймворков Python я решил принять этот. Также проверьте Google App Engine, если вы еще этого не сделали.

person greg    schedule 31.03.2009

Я бы сказал, что правильный ответ зависит от того, что вы действительно хотите и что вам нужно, так как то, что будет стоящим в долгосрочной перспективе, зависит от того, что вам понадобится в долгосрочной перспективе. Если ваша цель - развернуть приложения как можно скорее, тогда используйте «более простой» путь, т. Е. Джанго, безусловно, лучший вариант. Ценность хорошо протестированной и хорошо документированной системы, которая позволяет недооценивать именно то, что вам нужно.

С другой стороны, если у вас есть время, чтобы изучить множество новых вещей, которые могут применяться в других областях, и вы хотите иметь самые широкие возможности для настройки, тогда что-то вроде Turbogears лучше. Turbogears дает вам максимальную гибкость, но вам придется потратить много времени на чтение внешних документов для таких вещей, как Repoze, SQLAlchemy и Genshi, чтобы с его помощью сделать что-нибудь полезное. В некоторых случаях документы TG2 намеренно менее подробны, чем документы TG1, потому что считается, что внешние документы лучше, чем они были раньше. Являются ли подобные вещи препятствием или вложением средств, зависит от ваших требований.

person Community    schedule 01.04.2009

Django определенно стоит изучить, и похоже, что он подходит для ваших целей. Интерфейс администратора, с которым он поставляется, легко установить и запустить, и он использует аутентификацию.

Что касается «чего-либо более низкого уровня», если вы имеете в виду sql, вполне возможно засунуть sql в ваши запросы с дополнительным ключевым словом. Стилистически вы всегда стараетесь по возможности избегать этого.

Что касается «ничего не учиться» ... реальный вопрос заключается в том, предпочитаете ли вы в первую очередь изучать что-то низкоуровневое или более высокое, на этот вопрос вряд ли кто-то из присутствующих может ответить за вас.

person Community    schedule 31.03.2009

Пилоны кажутся мне отличным инструментом:

  • настоящий веб-фреймворк (CherryPy - это просто веб-сервер),
  • небольшая кодовая база - повторное использование других проектов,
  • написан полностью с учетом WSGI, на основе Paste,
  • позволяет сразу же закодировать приложение и при необходимости коснуться битов низкого уровня,

Я использовал CherryPy и TurboGears и смотрел на многие другие фреймворки, но ни один из них не был таким легким и производительным, как Pylons. Проверьте презентацию в Google.

person Community    schedule 29.05.2009

Я фанат TurboGears, и именно по этой причине: очень хороший компромисс между контролем и правильным и легким делом.

Конечно, вам придется принять собственное решение. Может быть, вы предпочтете узнать меньше, а может, и больше. Может быть, области, которые мне нравятся, знания / контроль (например, база данных), вам наплевать. И не поймите неправильно. Я не считаю какие-либо фреймворки обязательно жесткими или неправильными. Это просто мое субъективное мнение.

Также я бы порекомендовал TurboGears 2, если это вообще возможно. Когда он выйдет, я думаю, он будет намного лучше, чем 1.0, с точки зрения того, что он выбрал для значений по умолчанию (genshi, pylons, SqlAlchemy).

person Community    schedule 31.03.2009

Я бы посоветовал TurboGears 2. Они проделали фантастическую работу по интеграции лучшего из мира Python.

WSGI: Предположим, вы разрабатываете умеренно сложные проекты / бизнес-решения в TG2 или какой-либо другой платформе, скажем Grok. Несмотря на то, что эти структуры поддерживают WSGI, означает ли это, что тот, кто использует эти структуры, должен изучать WSGI? В большинстве случаев ответ - нет. Я имею в виду, что это знание, несомненно, хорошо.

Знание WSGI, вероятно, более полезно в таких случаях, как

  • вы хотите использовать промежуточное ПО или другой компонент, который не входит в стандартный стек, например. Authkit с TG или Grok без ZODB .
  • вы делаете некоторую интеграцию.

CherryPy - это хорошо, но подумайте об обработке коммитов / откатов вашей базы данных в конце транзакций, об открытии json, валидации в таких случаях, TG, фреймворки, подобные Django, сделают все это за вас.

person Community    schedule 31.03.2009
comment
CherryPy более питоничен, если вы следуете правилу из дзен (python.org/dev / peps / pep-0020): явное лучше неявного., простое лучше, чем сложное. Я не фанат волшебства, происходящего за кулисами, такого как коммиты и откаты. - person Martin; 01.04.2009

Web2py - это секретный соус. Не упустите возможность проверить это.

person Community    schedule 12.11.2015