Django проти web2py для початківця розробника [закрито]


83

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

PS. ОНОВЛЕННЯ: Дякую всім за чудовий внесок, після придбання трьох книг про django та проходження декількох невеликих проектів / підручників як для django, так і для web2py, я зупинився на web2py. Це чудова структура, яка робить веб-розробку справді цікавою для новачка. Я рекомендую всім новачкам вивчити цю структуру, оскільки вона буде основною в майбутньому. Django - також чудовий фреймворк, але web2py просто кращий, на мій обмежений досвід.


Подивіться, чи допомагає mengu.net/post/django-vs-web2py
Шив Діпак

1
"Web2py дозволяє зосередитись на розробці вашого додатка, а Django - ні. Він хоче, щоб ви робили всі його справи" Так, це звучить як дуже неупереджене порівняння
user240515

Не вибирайте пропозицію, щоб підтвердити своє твердження. Стаття не така вже й погана.
Ешлі

Здається, я знайшов підручник, орієнтований на повних новачків для web2py: Веб-розробка вбивць
Колін Кінан,

1
'якщо ви коли-небудь користувались Django ... все це базується на спадкуванні. Коли вони запровадили [CBV], це стало настільки складним, що комусь довелося зробити цей сайт лише для вивчення дерева спадкування: ccbv.co.uk '- news.ycombinator.com/item?id=7994281 проти' Ще одна хитрість полягає в тому, що моделі та контролери не засновані на класах, ефективне повторне використання коду стає ускладненим, зокрема, оскільки неможливість успадкування від батьківського контролера ... означає, що загальна функціональність контролера повинна посилатися неодноразово у всіх файлах контролера. ' - en.wikipedia.org/wiki/Web2py
mistermarko

Відповіді:


107

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

Django існує приблизно на 5 років довше, ніж web2py, тому у нього більше користувачів і більше додатків, які можна показати. Django має те, що вони називають "адміністратором", що не те саме, що "адміністратор" web2py, але більше схоже на "appadmin" web2py. "Адміністратор" Django є кращим і більш настроюваним, ніж "appadmin" web2py. Django не має еквівалента "адміністратора" 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.


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 - це вираз, який буде оцінюватися як true або false у кожному записі. Це фактичний код web2py. Без цитат.
Massimo

4
web2py DAL просто надає спосіб писати запити. Запити перетворюються в SQL і надсилаються до бази даних, яка повертає відповідь. web2py не залежить від кількості записів у базі даних і не хвилює. Іншими словами, якщо я напишу "db (db.tablename.fieldname <= value) .select ()", web2py НЕ збирається отримувати всі записи та видаляти стан на кожному з них. Це якщо збирається запитувати в базі даних "SELECT * FROM TABLENAME WHERE FIELDNAME = '1'".
Массімо

23

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

Важко відповісти на ваше запитання, не знаючи більше про те, що ви хочете зробити зі своїм навчанням. Деякі сказали б, що існує небезпека вивчення фреймворку, а не мови, тому, можливо, найкраще спочатку глибше зрозуміти мову Python та структуру легшої ваги (наприклад, Flask або wekzeug ).

Сказавши це, web2py має нижчу початкову криву навчання, ніж Django, оскільки він був спеціально розроблений як інструмент навчання . Тож я б сказав, що ви зробили вдалий вибір. Жодне навчання ніколи не марнується, і якщо ви вирішили, що вам знадобиться щось інше в майбутньому, хороші методи, які ви навчитеся за допомогою web2py, не підуть даремно.

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

Якщо ви прагнете влаштуватися на роботу, є більше вакансій Django, так що це може бути фактором. Сказавши це, web2py співтовариство нещодавно створило experts4solutions , де ви могли б сприяти свої навички і наявність в майбутньому.

Веселіться!


Завдяки Knitatoms, я насправді вивчив рубін, і я переходжу та вивчаю python, який досі здається дуже схожим. Що стосується того, що я хотів би зробити з фреймворком, то це полягало б у створенні веб-стартапу найближчим часом. Я також хотів би побудувати щось за допомогою jquerymobile, оскільки я з ним бавився.
RubyGladiator

2
Цікаво почути - я перебуваю в подібній позиції, і тому, що буду працювати на себе і, таким чином, вибираючи власну структуру, я пішов з web2py і досі задоволений.
клавішні

10

Я повноцінний нуб як з Web2py, так і з DJango, але я хотів веб-фреймворк, який був пітонічним, щоб грати з ним, вивчати та створювати інтерфейс для простої бази даних. Я подивився web2py, але не зміг знайти жодних гідних підручників, орієнтованих на повних початківців, коли мені встановили web2py, що було дуже просто, я не знав, що робити далі, здавалося, не було підручників, якими я би керувався як створити простий веб-додаток (а не просто привіт світ). З іншого боку, DJango написав вашу першу програму DJango, частина 1 . Це було дуже добре, даючи новачкові вступ про те, як налаштувати та використовувати фреймворк, написавши просту веб-програму. Поки Web2Py не пропонує цього, я голосую за DJango.


Я навчився Web2py, не знаючи Python або баз даних взагалі, переглядаючи: youtube.com/... Невдовзі після цього я створив два виробничі веб-сервіси для великого підприємства та бази користувачів з Web2py. Велике спасибі спільноті груп Google!
Preactive

6

Багато слів: (як я зрозумів)

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

Web2py більше зосереджує увагу на "просте - краще, ніж складне", але Django більше зосереджує увагу на "явне краще, ніж неявне". Дві частини Zen of Python, тому дуже важко сказати, яка структура є більш пітонічною.


9
Насправді я іноді вважаю, що Web2Py є досить протилежним, складним - що проти " комплекс краще, ніж складний ". Зворотна сумісність, дубльовані імена, неявне виконання різних файлів, глобальні змінні, що звисають скрізь - усі ці проблеми призвели до того, що фреймворк Python суперечить філософії Python.
Tadeck
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.