Django vs web2py dla początkującego programisty [zamknięte]

83

Który z tych dwóch frameworków jest bardziej odpowiedni dla programisty z 11-miesięcznym doświadczeniem. Zdecydowałem się nauczyć Pythona do kodowania po stronie serwera i chciałem wiedzieć, które z nich byłyby bardziej odpowiednie dla kogoś na moim poziomie umiejętności. Właśnie spędziłem kilka dni bawiąc się z web2py i bardzo mi się to podoba i zastanawiam się, czy Django oferuje coś więcej, czego mi brakuje?

PS. AKTUALIZACJA: Dziękuję wszystkim za wspaniały wkład, po zakupie trzech książek django i przejrzeniu kilku małych projektów / tutoriali zarówno dla django, jak i web2py, zdecydowałem się na web2py. To wspaniały framework, który sprawia, że ​​tworzenie stron internetowych jest naprawdę zabawne dla początkujących. Poleciłbym wszystkim początkującym, aby nauczyli się tego frameworka, ponieważ w przyszłości będzie on głównym nurtem. Django jest również wspaniałym frameworkiem, ale moim ograniczonym doświadczeniem jest po prostu web2py.

RubyGladiator
źródło
Zajrzyj do tego, czy to pomoże mengu.net/post/django-vs-web2py
Shiv Deepak
1
„Web2py pozwala skupić się na tworzeniu aplikacji, Django nie. Chce, abyś wykonywał wszystkie jej zadania”. Tak, brzmi jak bardzo obiektywne porównanie
user240515
Nie wybieraj cytatu potwierdzającego Twoje oświadczenie. Artykuł nie jest taki zły.
Ashley
Myślę, że znalazłem samouczek skierowany do zupełnie początkujących użytkowników web2py: Killer Web Development
Colin Keenan
1
'jeśli kiedykolwiek używałeś Django ... cała sprawa opiera się na dziedziczeniu. Kiedy wprowadzili [CBV], sytuacja stała się tak skomplikowana, że ​​ktoś musiał stworzyć tę witrynę tylko po to, by zbadać drzewo dziedziczenia: ccbv.co.uk '- news.ycombinator.com/item?id=7994281 vs' Kolejną wadą jest to, ponieważ modele i kontrolery nie są oparte na klasach, wydajne ponowne wykorzystanie kodu staje się trudniejsze, zwłaszcza że niemożność dziedziczenia po kontrolerze nadrzędnym ... oznacza, że ​​wspólne funkcje kontrolera muszą być wielokrotnie odwoływane we wszystkich plikach kontrolera. - en.wikipedia.org/wiki/Web2py
mistermarko

Odpowiedzi:

107

(zastrzeżenie: jestem liderem projektu dla web2py)

Django jest około 5 lat dłuższe niż web2py, dlatego ma więcej użytkowników i więcej aplikacji, którymi można się pochwalić. Django ma to, co nazywają „admin”, co nie jest tym samym, co „admin” web2py, ale bardziej przypomina „appadmin” web2py. "Admin" Django jest lepszy i bardziej konfigurowalny niż "appadmin" web2py. Django nie ma odpowiednika "admin" web2py. (przepraszam za zamieszanie w nazwie).

Platforma web2py jest bardziej kompaktowa i ma większą funkcjonalność po wyjęciu z pudełka (więcej obsługiwanych baz danych, internetowe IDE, system biletowy, działa na GAE bez poprawek, wiele metod logowania, kontrola dostępu oparta na rolach, internetowy interfejs tłumaczenia, obsługa wielu połączeń z bazami danych, transakcje rozproszone i nie tylko).

Dla mnie najważniejszą funkcjonalnością web2py są automatyczne migracje. Django nie dostarcza ich po wyjęciu z pudełka.

Dla web2py głównym celem jest długoterminowa kompatybilność wsteczna, wraz z bezpieczeństwem. Django jest porównywalne z web2py pod względem bezpieczeństwa (z wyjątkiem tego, że web2py miało zapobieganie CSRF i domyślne ucieczki w szablonach, zanim to zrobiły), ale Django złamał kompatybilność wsteczną, gdy wydano 1.0. Platforma web2py nigdy nie działała od października 2007.

Dla mnie składnia web2py jest bardziej naturalna:

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

Nie znam żadnej funkcjonalności web2py, której nie ma w Django. Zadawałem to pytanie wiele razy, ponieważ jeśli istnieje, to chcemy je dodać do web2py, ale nie otrzymałem jeszcze satysfakcjonującej odpowiedzi.

Oczywiście są rzeczy, które oboje robimy, ale inaczej. Django przestrzega zasady „wyraźne jest lepsze niż niejawne”. Platforma web2py nie działa i zamiast tego postępuje zgodnie z zasadą „wszystko powinno mieć domyślne zachowanie”. Uważam, że dzięki temu kod i konfiguracja web2py są bardziej zwarte.

W każdym razie, cokolwiek wybierzesz, są to dobre, solidne frameworki internetowe i jest mniej podobieństw niż różnic. Programiści Django to bardzo sprytni ludzie.

Społeczność web2py jest bardzo przyjazna. W ramach eksperymentu spróbuj zadać pytanie w grupie google web2py oraz w grupie Django.

mdipierro
źródło
1
Dzięki, to dobry materiał. Przechodzę przez samouczek Django, aby to przetestować, składnia web2py jest zdecydowanie bardziej naturalna. Mam nadzieję, że później będę miał jaśniejszy obraz, ale jak dotąd oba frameworki wyglądają naprawdę dobrze.
RubyGladiator
11
+1 (doceniam to, że web2py pozwala na pisanie w Pythonie bezpośrednio w Twoich widokach)
Doug
1
Mam pytanie dotyczące podanego przez Ciebie przykładu web2py (" db(db.tablename.fieldname <= value).select()"), ponieważ nie wygląda on jak Python (część w nawiasach nie jest przypisywaniem wartości do jednego z parametrów, a jedynie przekazywanie True/ False). Czy jest to standard dla web2py, czy też kod, który podałeś jest uproszczoną wersją prawdziwego kodu web2py? Może część w nawiasach powinna być ujęta w cudzysłów? Proszę wytłumacz.
Tadeck
W db (...). Select () ... nie jest wartością Prawda / Fałsz. db.tablename.fieldname <= wartość jest wyrażeniem, które będzie oceniane jako prawda lub fałsz w każdym rekordzie. To jest rzeczywisty kod web2py. Brak cytatów.
Massimo,
4
Platforma web2py DAL umożliwia po prostu pisanie zapytań. Zapytania są konwertowane w języku SQL i wysyłane do bazy danych, która zwraca odpowiedź. Liczba rekordów w bazie danych nie ma wpływu na web2py i nie przejmuje się tym. Innymi słowy, jeśli napiszę „db (db.tablename.fieldname <= wartość) .select ()”, web2py NIE pobierze wszystkich rekordów i nie zmieni warunków na każdym z nich. W przypadku wysyłania zapytania do bazy danych o „SELECT * FROM TABLENAME WHERE FIELDNAME = '1'”.
Massimo
23

Zarówno Django, jak i web2py to doskonałe frameworki internetowe typu „full stack” z podobnymi funkcjami i możliwościami - nie przegapisz żadnego z nich jako początkujący.

Trudno odpowiedzieć na twoje pytanie, nie wiedząc więcej o tym, co chcesz zrobić ze swoją nauką. Niektórzy powiedzieliby, że istnieje niebezpieczeństwo nauczenia się frameworka, a nie języka, więc najlepiej byłoby lepiej poznać język Python i lżejsze frameworki (np. Flask lub wekzeug najpierw ).

Mimo to web2py ma niższą początkową krzywą uczenia się niż Django, ponieważ został specjalnie zaprojektowany jako narzędzie do nauki . Więc powiedziałbym, że dokonałeś dobrego wyboru. Żadna nauka nie zostanie zmarnowana, a jeśli zdecydujesz, że potrzebujesz czegoś innego w przyszłości, dobre techniki, których nauczyłeś się przy użyciu web2py, nie pójdą na marne.

Chociaż istnieje więcej zasobów edukacyjnych dla Django, ponieważ istnieje już dłużej i ma więcej użytkowników, nauka web2py jest również szybka dzięki doskonałej książce i niemal natychmiastowym odpowiedziom na pytania grupy użytkowników .

Jeśli szukasz pracy, jest więcej ofert pracy w Django, więc może to mieć znaczenie. Powiedziawszy to, społeczność web2py niedawno utworzyła expert4solutions, gdzie możesz promować swoje umiejętności i dostępność w przyszłości.

Baw się dobrze!

bity
źródło
Dzięki Knitatoms, właściwie nauczyłem się ruby ​​i przechodzę przez niego i uczę się Pythona, który wydaje się do tej pory bardzo podobny. Jeśli chodzi o to, co chciałbym zrobić z frameworkiem, byłoby to wyłącznie zbudowanie start-upu internetowego w najbliższej przyszłości. Chciałbym również zbudować coś za pomocą jquerymobile, ponieważ bawiłem się tym.
RubyGladiator
2
Ciekawe - jestem w podobnej sytuacji i ponieważ będę pracować dla siebie, wybierając własny framework, wybrałem web2py i do tej pory jestem zadowolony.
klawisze
10

Jestem kompletnym noobem z Web2py i DJango, ale potrzebowałem frameworka internetowego, który byłby w Pythonie do zabawy, uczenia się i tworzenia interfejsu dla prostej bazy danych. Spojrzałem na web2py, ale nie mogłem znaleźć żadnych przyzwoitych samouczków, skierowanych do zupełnie początkujących, kiedy zainstalowałem web2py, co było bardzo łatwe, nie wiedziałem, co robić dalej, wydawało się, że nie ma samouczków, które by mnie prowadziły jak zbudować prostą aplikację internetową (nie tylko witaj świecie). Z drugiej strony, DJango napisał pierwszą aplikację DJango, część 1 . To było naprawdę dobre, dając początkującym wprowadzenie do konfiguracji i korzystania z frameworka, pisząc prostą aplikację internetową. Dopóki Web2Py tego nie zaoferuje, mój głos trafia do DJango.

user595985
źródło
Nauczyłem się Web2py, nie znając w ogóle Pythona ani baz danych, oglądając: youtube.com/… Niedługo potem zbudowałem dwie produkcyjne usługi internetowe dla dużego przedsiębiorstwa i bazy użytkowników za pomocą Web2py. Wielkie dzięki dla społeczności Google Groups!
Preactive
6

W wielu słowach: (jak zrozumiałem)

Web2py jest zdecydowanie łatwiejsze i sprawia, że ​​kod jest prostszy i bardziej przejrzysty. Ale Django daje lepsze zrozumienie tego, co się dzieje, a także więcej możliwości modyfikowania projektu / procesu.

Web2py skupia się bardziej na „prostym jest lepszym niż złożonym”, ale Django bardziej skupia się na „jawnym jest lepszym niż niejawnym”. Dwie części The Zen of Python, więc bardzo trudno powiedzieć, który framework jest bardziej Pythonic.

saeedgnu
źródło
9
Właściwie czasami uważam, że Web2Py jest raczej przeciwne, skomplikowane - co jest sprzeczne z zasadą „ złożone jest lepsze niż skomplikowane ”. Kompatybilność wsteczna, zduplikowane nazwy, niejawne wykonywanie różnych plików, zmienne globalne wiszące wszędzie - wszystkie te problemy spowodowały, że framework Pythona jest raczej sprzeczny z filozofią Pythona.
Tadeck