Seite 1 von 2

Verfasst: Dienstag 1. April 2008, 14:02
von Y0Gi
Mir scheint hier "Frameworks" etwas zu locker genommen zu werden. Als Web-Framework in der Python-Welt verstehe ich Pylons, TurboGears und Django. Alle bestehen aus Komponenten, die entweder (wie bei den ersten beiden) eigenständig sind oder nur im Rahmen des Frameworks erhältlich oder benutzbar sind (trifft für das Meiste bei Django zu).

Für Web-Entwicklung sollte man sich unbedingt Komponenten bedienen. Eine Template-Engine ist *immer* eine gute Idee, praktisch egal, wie wenig Code man erzeugt. Kommt eine Datenbank ins Spiel, entfaltet gerade SQLAlchemy seinen wahren Wert, weil es vom verwendeten DBMS abstrahiert (und damit ein Wechseln ermöglicht) und man kein SQL mehr schreiben muss (was oft sehr ähnlich aussieht, wenn es um die einfachen, gängigen Fälle simpler Abfragen geht), sondern sowas sehr kompakt, flexibel und einheitlich programmatisch in Python formulieren kann.
An weiteren Komponenten Fallen mir da solche für URL-Handling, Sessions, Caching, Formularauswertung und mehr ein.

Ein Framework trifft letztlich meist eine Vorauswahl aus solchen Komponenten und integriert diese mehr oder weniger stark mit ein wenig Glue-Code. Dies mag für 80% der Fälle eine Lösung sein, ist dennoch aber nicht die einzige. Die Komponenten einzeln zu verwenden oder selbst zu integrieren, ist meist sehr einfach und problemlos, dabei zugleich mit mehr Unabhängigkeit und Freiheit verbunden, etwa was Auswahl, Austausch und schrittweises Ergänzen angeht.

Ergo: Ohne Frameworks kommt man auch sehr gut aus, aber man sollte sich schon *sehr* (!) genau überlegen, ob man wirklich nicht auf Komponenten zurückgreift, die die gewollten Wege vereinfachen und optimieren. In Bezug auf eigene Lösungen sollte man sich im Klaren darüber sein, dass man damit praktisch nie an die Qualität von populären und täglich eingesetzten (Open Source-)Produkten heran kommt, die täglich mit Bugreports und Patches verbessert werden.

Verfasst: Dienstag 1. April 2008, 14:17
von jens
Y0Gi hat geschrieben:Die Komponenten einzeln zu verwenden oder selbst zu integrieren, ist meist sehr einfach und problemlos, dabei zugleich mit mehr Unabhängigkeit und Freiheit verbunden, etwa was Auswahl, Austausch und schrittweises Ergänzen angeht.
Das hört sich schön und einfach an. Der Threadstarter hat allerdings gerade erst angefangen...
In der Praxis ist es außerdem alles andere als einfach. Ich denke das beste Beispiel ist Turbogears. Da waren sicherlich einige sehr fähige Leute am Werk. Dennoch gibt es mit der neuen Version ein Bruch, weil die alte Version anscheinend doch nicht so schön war.
Wenn also ein Einsteiger versucht sich mit einigen tollen Komponenten einzudecken und alles zusammen zu kleben, wird es wahrscheinlich in die Hose gehen, würde ich sagen. Dann besser auf unterster Ebene sich die Welt der WebApps anschauen.

Ich denke es ist gerade für Einsteiger vom Vorteil das man gewisse vorgaben an die Hand bekommt und das ist die stärke von django.

Verfasst: Dienstag 1. April 2008, 14:37
von Leonidas
jens hat geschrieben:In der Praxis ist es außerdem alles andere als einfach. Ich denke das beste Beispiel ist Turbogears. Da waren sicherlich einige sehr fähige Leute am Werk. Dennoch gibt es mit der neuen Version ein Bruch, weil die alte Version anscheinend doch nicht so schön war.
Ich habe mich nie richtig für TG erwärmen können, weil es immer irgendwie im Fluss war. 0.7 war nett, 0.8 war damals unfertig und hat eine riesige Menge Dependencies gehabt, so dass ich zu Django gegangen bin, wo sich alles solider anfühlt und nicht ständig wechselt.

Verfasst: Dienstag 1. April 2008, 15:12
von Y0Gi
TG war und ist in meinen Augen ein Prototyp (von den Anfängen mit CP, Kid und SQLObject mal abgesehen), der scheinbar nur an aktuelle Entwicklungen angepasst wird (was an sich ja positiv ist), aber so nie mittel- oder gar langfristig vernünftig einsetzbar ist. Ich betrachte es als eine Art "so würde es aussehen, wenn man es machen würde".

Verfasst: Dienstag 1. April 2008, 19:00
von Hyperion
Auch wenn's ein wenig offtopic ist, aber kennt jemand etwas ähnliches wie JavaServerFaces für Python? Speziell bei komplexeren Formularen hätte ich da gerne etwas für Python - und für solche Sachen Templates komplett per Hand zu schreiben kann nicht der Weisheit letzter Schluss sein imho.

Verfasst: Dienstag 1. April 2008, 19:59
von Leonidas
Hyperion hat geschrieben:Speziell bei komplexeren Formularen hätte ich da gerne etwas für Python - und für solche Sachen Templates komplett per Hand zu schreiben kann nicht der Weisheit letzter Schluss sein imho.
FormBuild? Djangos newforms? ToscaWidgets? Die können zum Teil auch aus dem Datenbankschema generiert werden.