Django vs web2py für einen Anfänger Entwickler [geschlossen]

83

Welches dieser beiden Frameworks eignet sich besser für Entwickler mit 11 Monaten Erfahrung? Ich habe mich entschlossen, Python für meine serverseitige Codierung zu lernen und wollte wissen, welche davon für jemanden mit meinen Fähigkeiten besser geeignet ist. Ich habe gerade ein paar Tage damit verbracht, mit web2py herumzuspielen und es wirklich zu mögen, und ich frage mich, ob Django etwas mehr bietet, das ich verpasse?

PS. UPDATE: Vielen Dank für die wundervolle Eingabe, nachdem ich drei Django-Bücher gekauft und ein paar kleine Projekte / Tutorials für Django und web2py durchgearbeitet habe, habe ich mich für web2py entschieden. Dies ist ein wunderbares Framework, mit dem die Webentwicklung für Neulinge wirklich Spaß macht. Ich würde allen Neulingen empfehlen, dieses Framework zu lernen, da es in Zukunft Mainstream sein wird. Django ist auch ein wunderbares Framework, aber web2py ist meiner Meinung nach nur begrenzt besser.

RubyGladiator
quelle
Schauen Sie nach, ob es mengu.net/post/django-vs-web2py
Shiv Deepak
1
"Mit Web2py können Sie sich auf die Entwicklung Ihrer Anwendung konzentrieren, Django nicht. Es möchte, dass Sie alle seine Aufgaben erledigen." Ja, klingt nach einem sehr unvoreingenommenen Vergleich
user240515
Wählen Sie kein Auswahlangebot aus, um Ihre Aussage zu unterstützen. Der Artikel ist nicht so schlecht.
Ashley
Ich glaube, ich habe ein Tutorial gefunden, das sich an Neulinge für web2py richtet: Killer Web Development
Colin Keenan
1
'Wenn Sie jemals Django benutzt haben ... basiert das Ganze auf Vererbung. Als sie [CBVs] einführten, wurde es so komplex, dass jemand diese Site nur zum Erkunden des Vererbungsbaums erstellen musste : ccbv.co.uk '- news.ycombinator.com/item?id=7994281 vs' Ein weiterer Nachteil ist, dass, weil Modelle und Controller sind nicht klassenbasiert, eine effiziente Wiederverwendung von Code wird schwieriger, insbesondere da die Unfähigkeit, von einem übergeordneten Controller zu erben, bedeutet, dass auf die Funktionen gemeinsamer Controller in allen Controller-Dateien wiederholt verwiesen werden muss. ' - en.wikipedia.org/wiki/Web2py
Mistermarko

Antworten:

107

(Haftungsausschluss: Ich bin der Projektleiter für web2py)

Django ist ungefähr 5 Jahre länger als web2py, daher gibt es mehr Benutzer und mehr Anwendungen, die man vorführen kann. Django hat das, was sie "admin" nennen, was nicht dasselbe ist wie "admin" von web2py, sondern eher "appadmin" von web2py. Djangos "admin" ist besser und anpassbarer als web2pys "appadmin". Django hat nicht das Äquivalent zu web2pys "admin". (Entschuldigung für die Namensverwirrung).

web2py ist kompakter und bietet sofort mehr Funktionen (mehr unterstützte Datenbanken, webbasierte IDE, Ticketing-System, läuft auf GAE ohne Patches, mehrere Anmeldemethoden, rollenbasierte Zugriffskontrolle, webbasierte Übersetzungsschnittstelle, Unterstützung für mehrere Datenbankverbindungen, verteilte Transaktionen und mehr).

Für mich ist die wichtigste Funktionalität von web2py die automatische Migration. Django stellt sie nicht sofort zur Verfügung.

Für web2py ist langfristige Abwärtskompatibilität neben Sicherheit ein vorrangiges Ziel. Django ist in Bezug auf die Sicherheit mit web2py vergleichbar (mit der Ausnahme, dass web2py zuvor CSRF-Verhinderung und Standard-Escape in Vorlagen hatte), aber Django brach die Abwärtskompatibilität, als 1.0 veröffentlicht wurde. web2py hat es seit Oktober 2007 nie mehr getan.

Für mich ist die web2py-Syntax natürlicher:

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

Mir sind keine Funktionen von web2py bekannt, die in Django nicht vorhanden sind. Ich habe diese Frage oft gestellt, weil wir sie gegebenenfalls zu web2py hinzufügen möchten, aber ich habe noch keine zufriedenstellende Antwort erhalten.

Natürlich gibt es Dinge, die wir beide tun, aber unterschiedlich. Django folgt "explizit ist besser als implizit". web2py tut dies nicht und folgt stattdessen "Alles sollte ein Standardverhalten haben". Ich glaube, dies macht den web2py-Code und die Konfiguration kompakter.

Wie auch immer Sie sich entscheiden, beide sind gute solide Web-Frameworks und es gibt weniger Ähnlichkeiten als Unterschiede. Die Entwickler von Django sind sehr kluge Leute.

Die web2py Community ist sehr freundlich. Versuchen Sie als Experiment, eine Frage in der web2py-Google-Gruppe und in der Django-Gruppe zu stellen.

mdipierro
quelle
1
Danke, das sind ein paar gute Sachen. Ich gehe ein Django-Tutorial durch, um es zu testen. Die Web2py-Syntax ist definitiv natürlicher. Hoffentlich habe ich danach ein klareres Bild, aber bisher sehen beide Frameworks wirklich gut aus.
RubyGladiator
11
+1 (ich schätze, dass web2py es Ihnen ermöglicht, Python direkt in Ihre Ansichten zu schreiben)
Doug
1
Ich habe eine Frage zum von Ihnen angegebenen web2py-Beispiel (" db(db.tablename.fieldname <= value).select()"), da es nicht wie Python aussieht (der Teil in Klammern weist keinem der Parameter einen Wert zu, sondern übergibt nur True/ False). Ist es Standard für web2py oder ist der von Ihnen bereitgestellte Code nur eine vereinfachte Version des realen web2py-Codes? Vielleicht sollte der Teil in Klammern in Anführungszeichen gesetzt werden? Bitte erkläre.
Tadeck
In db (...). Select () ist ... kein True / False-Wert. db.tabellenname.Feldname <= Wert ist ein Ausdruck, der in jedem Datensatz als wahr oder falsch ausgewertet wird. Dies ist der eigentliche web2py-Code. Keine Zitate.
Massimo
4
web2py DAL bietet einfach eine Möglichkeit, Abfragen zu schreiben. Die Abfragen werden in SQL konvertiert und an die Datenbank gesendet, die eine Antwort zurückgibt. web2py ist nicht davon betroffen, wie viele Datensätze sich in der Datenbank befinden, und es ist ihm egal. Mit anderen Worten, wenn ich "db (db.tablename.fieldname <= value) .select ()" schreibe, ruft web2py NICHT alle Datensätze ab und evuliert die Bedingung für jeden von ihnen. Wenn Sie die Datenbank nach "SELECT * FROM TABLENAME WHERE FIELDNAME = '1'" abfragen.
Massimo
23

Sowohl Django als auch web2py sind hervorragende Full-Stack-Webframeworks mit ähnlichen Funktionen und Fähigkeiten - Sie werden als Anfänger mit beiden Frameworks nicht viel verpassen.

Es ist schwierig, Ihre Frage zu beantworten, ohne mehr darüber zu wissen, was Sie mit Ihrem Lernen anfangen möchten. Einige würden sagen, dass die Gefahr besteht, das Framework und nicht die Sprache zu lernen . Daher ist es möglicherweise am besten, zuerst ein tieferes Verständnis der Python-Sprache und der leichteren Frameworks (z. B. Flask oder Wekzeug ) zu erlangen .

Trotzdem hat web2py eine niedrigere anfängliche Lernkurve als Django, da es speziell als Lernwerkzeug entwickelt wurde . Ich würde also sagen, Sie haben eine gute Wahl getroffen. Kein Lernen wird jemals verschwendet und wenn Sie sich entschieden haben, in Zukunft etwas anderes zu benötigen, werden die guten Techniken, die Sie mit web2py gelernt haben, nicht verloren gehen.

Obwohl es für Django mehr Lernressourcen gibt, da es schon länger existiert und mehr Benutzer hat, ist das Lernen von web2py aufgrund des hervorragenden Buches und der fast sofortigen Beantwortung von Fragen zur Benutzergruppe auch schnell .

Wenn Sie einen Job suchen, gibt es mehr Django-Jobs, so dass dies ein Faktor sein könnte. Allerdings hat die web2py-Community kürzlich Experiments4-Lösungen eingerichtet, mit denen Sie Ihre Fähigkeiten und Verfügbarkeit in Zukunft fördern können.

Habe Spaß!

Keybits
quelle
Dank Knitatoms habe ich tatsächlich Ruby gelernt und ich gehe hinüber und lerne Python, was bisher sehr ähnlich zu sein scheint. In Bezug auf das, was ich mit einem Framework machen möchte, wäre dies, in naher Zukunft nur ein Web-Startup aufzubauen. Ich würde auch gerne etwas mit jquerymobile bauen, da ich damit herumgespielt habe.
RubyGladiator
2
Interessant zu hören - ich bin in einer ähnlichen Position und weil ich für mich selbst arbeiten und somit mein eigenes Framework wählen werde, habe ich mich für web2py entschieden und bin bisher glücklich.
Keybits
10

Ich bin sowohl mit Web2py als auch mit DJango ein absoluter Neuling, aber ich wollte ein pythonisches Webframework, mit dem ich spielen, lernen und ein Frontend für eine einfache Datenbank erstellen kann. Ich habe mir web2py angesehen, konnte aber keine anständigen Tutorials finden, die sich an Neulinge richteten. Als ich web2py installiert habe, war das sehr einfach. Ich wusste nicht, was ich als nächstes tun sollte. Es schien keine Tutorials zu geben, die mich weiterführten wie man eine einfache Web-App erstellt (nicht nur Hallo Welt). Auf der anderen Seite hat DJango Ihre erste DJango App Teil 1 geschrieben . Dies war wirklich gut und gab einem Neuling eine Einführung in die Einrichtung und Verwendung des Frameworks durch Schreiben einer einfachen Web-App. Bis Web2Py dies anbietet, geht meine Stimme an DJango.

user595985
quelle
Ich habe Web2py gelernt, indem ich Python oder Datenbanken überhaupt nicht kannte, indem ich Folgendes angesehen habe: youtube.com/… Kurz darauf habe ich mit Web2py zwei Produktions-Webdienste für ein großes Unternehmen und eine Benutzerbasis erstellt. Vielen Dank an die Google Groups Community!
Preactive
6

In vielen Worten: (wie ich verstanden habe)

Web2py ist definitiv einfacher und macht den Code einfacher und sauberer. Aber Django gibt Ihnen ein besseres Verständnis dafür, was los ist, und mehr Möglichkeiten, das Design / den Prozess zu ändern.

Web2py konzentriert sich mehr auf "einfach ist besser als komplex", aber Django konzentriert sich mehr auf "explizit ist besser als implizit". Zwei Teile des Zen of Python, daher ist es sehr schwer zu sagen, welches Framework mehr pythonisch ist.

saeedgnu
quelle
9
Eigentlich finde ich Web2Py manchmal eher gegensätzlich, kompliziert - was gegen den " Komplex ist besser als kompliziert " ist. Abwärtskompatibilität, doppelte Namen, implizite Ausführung verschiedener Dateien, überall hängende globale Variablen - all diese Probleme führten zu einem Python-Framework, das eher gegen Pythons Philosophie verstößt.
Tadeck