Django vs web2py для начинающего разработчика [закрыто]

83

Какой из этих двух фреймворков больше подходит разработчику с опытом работы 11 месяцев. Я решил изучить Python для программирования на стороне сервера и хотел знать, какой из них лучше подходит для кого-то с моим уровнем квалификации. Я только что провел несколько дней, играя с web2py, и мне он действительно нравится, и мне интересно, предлагает ли Django что-то еще, что я упускаю?

PS. ОБНОВЛЕНИЕ: Спасибо всем за прекрасный вклад, после покупки трех книг по django и прохождения нескольких небольших проектов / руководств как для django, так и для web2py, я остановился на web2py. Это замечательный фреймворк, который делает веб-разработку действительно интересной для новичка. Я бы порекомендовал всем новичкам изучить этот фреймворк, так как он станет популярным в будущем. Django также является прекрасным фреймворком, но, по моему ограниченному опыту, web2py просто лучше.

РубинГладиатор
источник
Посмотрите, поможет ли это mengu.net/post/django-vs-web2py
Шив Дипак
1
«Web2py позволяет вам сосредоточиться на разработке приложения, а Django - нет. Он хочет, чтобы вы делали все его вещи». Да, звучит как очень беспристрастное сравнение
user240515
Не выбирайте цитату для подтверждения своего утверждения. Статья не так уж и плоха.
Эшли
Думаю, я нашел руководство, предназначенное для полных новичков в web2py: Killer Web Development
Колин Кинан
1
Если вы когда-нибудь использовали Django ... все основано на наследовании. Когда они представили [CBV], он стал настолько сложным, что кому-то пришлось создать этот сайт только для изучения дерева наследования: ccbv.co.uk '- news.ycombinator.com/item?id=7994281 vs' Другой минус в том, что потому что модели и контроллеры не основаны на классах, эффективное повторное использование кода становится все более трудным, особенно из-за невозможности наследования от родительского контроллера ... означает, что на общие функции контроллера необходимо ссылаться повторно во всех файлах контроллера ». - en.wikipedia.org/wiki/Web2py
mistermarko,

Ответы:

107

(отказ от ответственности: я руководитель проекта web2py)

Django существует примерно на 5 лет дольше, чем web2py, поэтому у него больше пользователей и больше приложений, которыми можно похвастаться. В Django есть то, что они называют «админ», что не то же самое, что «админ» в web2py, а больше похоже на «appadmin» в web2py. «Администратор» Django лучше и более настраиваемый, чем «appadmin» web2py. Django не имеет эквивалента "admin" web2py. (извините за путаницу в названии).

web2py более компактен и имеет больше функциональных возможностей (больше поддерживаемых баз данных, веб-IDE, система продажи билетов, работает в GAE без исправлений, несколько методов входа в систему, управление доступом на основе ролей, веб-интерфейс перевода, поддержка нескольких подключений к базе данных, распределенные транзакции и др.).

Для меня самая важная функциональность web2py - автоматические миграции. Django не предоставляет их прямо из коробки.

Для web2py долгосрочная обратная совместимость является основной целью наряду с безопасностью. Django сравним с web2py с точки зрения безопасности (за исключением того, что у web2py была защита от CSRF и экранирование по умолчанию в шаблонах до того, как они это сделали), но Django нарушил обратную совместимость, когда была выпущена 1.0. web2py никогда не делал с октября 2007 года.

Для меня синтаксис web2py более естественен:

 db(db.tablename.fieldname <= value).select() # web2py
 Tablename.objects.filter(fieldname__lt=value) # Django

Мне неизвестны какие-либо функции web2py, которых нет в Django. Я задавал этот вопрос много раз, потому что, если он есть, мы хотим добавить его в web2py, но я еще не получил удовлетворительного ответа.

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

В любом случае, что бы вы ни выбрали, они обе являются хорошими прочными веб-фреймворками, и сходств меньше, чем различий. Разработчики Django - очень умные люди.

Сообщество web2py очень дружелюбное. В качестве эксперимента попробуйте задать вопрос в группе web2py google и группе Django.

mdipierro
источник
1
Спасибо, это хороший материал. Я просматриваю учебник Django, чтобы проверить это, синтаксис web2py определенно более естественный. Надеюсь, после этого у меня будет более четкая картина, но пока обе структуры выглядят действительно хорошо.
RubyGladiator
11
+1 (я ценю, что web2py позволяет писать python прямо в ваших представлениях)
Дуг
1
У меня есть вопрос относительно примера web2py, который вы предоставили (" db(db.tablename.fieldname <= value).select()"), потому что он не похож на Python (часть в скобках не присваивает значение одному из параметров, а только передает True/ False). Это стандарт для web2py или предоставленный вами код - это просто упрощенная версия реального кода web2py? Возможно, часть в квадратных скобках стоит заключить в кавычки? Пожалуйста, объясни.
Tadeck
В db (...). Select () ... не является значением True / False. db.tablename.fieldname <= value - это выражение, которое будет оцениваться как истинное или ложное для каждой записи. Это актуальный код web2py. Никаких цитат.
Massimo
4
web2py DAL просто предоставляет способ писать запросы. Запросы преобразуются в SQL и отправляются в базу данных, которая возвращает ответ. web2py не зависит от количества записей в базе данных и его не волнует. Другими словами, если я напишу «db (db.tablename.fieldname <= value) .select ()», web2py НЕ будет извлекать все записи и вычислять условие для каждой из них. Это если вы собираетесь запросить базу данных для "SELECT * FROM TABLENAME WHERE FIELDNAME = '1'".
Massimo
23

И Django, и web2py - отличные веб-фреймворки «полного стека» с похожими функциями и возможностями - вы не упустите многое, как новичок, с любым из этих фреймворков.

Трудно ответить на ваш вопрос, не зная больше о том, что вы хотите делать в процессе обучения. Некоторые скажут, что существует опасность изучения фреймворка, а не языка, поэтому может быть лучше получить более глубокое понимание языка Python и более легких фреймворков (например, Flask или wekzeug ).

При этом у web2py более низкая кривая начального обучения, чем у Django, поскольку он был специально разработан как инструмент обучения. . Я бы сказал, что вы сделали хороший выбор. Никакое обучение никогда не будет потрачено зря, и если вы решили, что вам понадобится что-то еще в будущем, хорошие методы, которые вы изучите с помощью web2py, не пропадут зря.

Хотя существует больше учебных ресурсов для Django, поскольку он существует дольше и имеет больше пользователей, изучение web2py также происходит быстро из-за отличной книги и почти мгновенных ответов на вопросы группы пользователей. .

Если вы хотите найти работу, есть больше вакансий в Django, так что это может быть фактором. Сказав это, сообщество web2py недавно создало expert4solutions, где вы могли бы продвигать свои навыки и доступность в будущем.

Радоваться, веселиться!

ключевые слова
источник
Спасибо Knitatoms, я действительно выучил рубин, перехожу и изучаю питон, который пока кажется очень похожим. Что касается того, что я хотел бы сделать с фреймворком, то в ближайшем будущем я хотел бы просто создать веб-стартап. Я также хотел бы создать что-то с помощью jquerymobile, поскольку я играл с ним.
RubyGladiator
2
Интересно слышать - я нахожусь в аналогичном положении, и поскольку я буду работать на себя и, таким образом, выберу свой собственный фреймворк, я выбрал web2py и пока что доволен.
keybits 04
10

Я полный новичок и в Web2py, и в DJango, но мне нужен был питонический веб-фреймворк, с которым можно было поиграть, изучить и создать интерфейс для простой базы данных. Я посмотрел на web2py, но не смог найти достойных руководств, ориентированных на полных новичков, когда я установил web2py, что было очень просто, я не знал, что делать дальше, похоже, не было никаких руководств, которые помогли бы мне как создать простое веб-приложение (не только привет мир). С другой стороны, DJango написал первую часть вашего первого приложения для DJango . Это было действительно хорошо, давая новичку представление о том, как настроить и использовать фреймворк, написав простое веб-приложение. Пока Web2Py не предложит это, я голосую за DJango.

user595985
источник
Я изучил Web2py, не зная Python или баз данных, просмотрев: youtube.com/… Вскоре после этого я создал два производственных веб-сервиса для крупного предприятия и базы пользователей с помощью Web2py. Большое спасибо сообществу групп Google!
Preactive
6

Проще говоря: (как я понял)

Web2py определенно проще и делает код проще и чище. Но Django дает вам лучшее понимание того, что происходит, а также дает больше возможностей для изменения дизайна / процесса.

Web2py уделяет больше внимания «простому лучше, чем сложному», но Django уделяет больше внимания «явному лучше, чем неявному». Две части The Zen of Python, поэтому очень сложно сказать, какой фреймворк более Pythonic.

Saeedgnu
источник
9
На самом деле я иногда нахожу, что Web2Py скорее противоположен, сложен - что противоречит утверждению « сложное лучше, чем сложное ». Обратная совместимость, повторяющиеся имена, неявное выполнение различных файлов, повсюду глобальные переменные - все эти проблемы привели к созданию фреймворка Python, который скорее противоречит философии Python.
Tadeck 06