Eure Meinung zu Python on Wheels

Django, Flask, Bottle, WSGI, CGI…
Antworten
zegru
User
Beiträge: 66
Registriert: Freitag 9. Oktober 2020, 09:22

Mich würde interessieren, was ihr vom Projekt "Python on Wheels" haltet.
Einerseits ist es ein recht interessantes Konzept, andererseits gibt es keinerlei Literatur darüber. Es scheint also bestenfalls ein Nischenprodukt zu sein, das vor dem Durchbruch oder vor dem Tod steht.
Ich bin nämlich gerade am Schwanken, welches Webframework ich verwenden soll (dieses oder doch Flask).
Bolitho
User
Beiträge: 219
Registriert: Donnerstag 21. Juli 2011, 07:01
Wohnort: Stade / Hamburg
Kontaktdaten:

Die Frage ist ja auch, wofür willst du es verwenden? Ein kleines Hobbyprojekt? Da kann man auch mal was ausprobieren. Ein Kundenprojekt? Da würde ich sicher beim Mainstream bleiben, auch damit der Kunde nicht allein von mir abhängig ist.
zegru
User
Beiträge: 66
Registriert: Freitag 9. Oktober 2020, 09:22

Ein Hobbyprojekt. Einem Kunden könnte man das echt nicht anpreisen.
Anderseits möchte ich mich aber auch für ein privates Projekt nicht in die Ecke manövrieren.
Gibt es letztlich nur die Wahl zwischen Django und Flask? Wie kommen die beiden eigentlich damit zurecht, dass man sich den Inhalt sowohl auf dem Desktop als auch auf dem Handy ansieht?
Sirius3
User
Beiträge: 18299
Registriert: Sonntag 21. Oktober 2012, 17:20

Es gibt etliche Rahmenwerke, die Frage ist, wie sehr braucht man bestimmte Funktionalität und wie groß soll der Nutzerkreis sein.
Wie etwas auf dem Desktop oder Handy angezeigt wird, ist keine Frage des Rahmenwerkes, sondern eine Frage von HTML und CSS.
zegru
User
Beiträge: 66
Registriert: Freitag 9. Oktober 2020, 09:22

Funktionalität und Nutzerkreis sind schwierig zu beurteilen, weil das Projekt organisch wachsen soll und nie fertig wird, und sie sich daher im Laufe der Zeit ändern werden.
Ich nehme auch an, dass sich etliche HTML-Seiten am Desktop vom Aufbau der Komponenten ABC sind, aber auf dem Handy BA, und C ist hinter Menüs. Kann man das mit CSS abbilden? Ich bin kein Profi, was CSS angeht.
Wie ich das nämlich verstanden habe wird mit Flask eine nur begrenzt dynamische Seite generiert.
Sirius3
User
Beiträge: 18299
Registriert: Sonntag 21. Oktober 2012, 17:20

Ja das wird mit CSS gelöst, oder notfalls mit Javascript. Und was meinst Du mit "begrenzt dynamisch"?
zegru
User
Beiträge: 66
Registriert: Freitag 9. Oktober 2020, 09:22

Wie ich das verstanden habe, wird in Flask ja die fertige HTML Seite aus einem Template generiert. Die Reihenfolge der einzelnen Komponenten sollte da eigentlich nicht vom Typ des Endgeräts abhängig sein, sondern es werden im Template nur einzelne Strings oder Listen angepasst.
Benutzeravatar
__blackjack__
User
Beiträge: 14136
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@zegru: Die Anzeige wird auf dem Endgerät per CSS geregelt. http://www.csszengarden.com ist da so ein Showcase wo immer das gleiche HTML mit verschiedenen CSS-Dateien gestylt wird.

Das CSS schreibt man in der Regel auch nicht selbst, sondern verwendet eines der CSS-Rahmenwerke wie Bootstrap.
“It is easier to change the specification to fit the program than vice versa.” — Alan J. Perlis
zegru
User
Beiträge: 66
Registriert: Freitag 9. Oktober 2020, 09:22

Aha. Okay.
Und ob man Django oder Flask verwenden sollte, ist vermutlich eine Glaubensfrage (sowas wie Emacs oder vi)?
Generell muss ich übrigens sagen, dass ich vom generellen Antwortverhalten des Forums positiv überrascht bin: Es ist schnell, hilfreich und freundlich.
Aber einen Rant zu Python selber muss ich noch ablassen: Mir gefällt die Programmiersprache ziemlich gut, aber das "explizit ist besser als implizit" hat mir bei OOP (und vermutlich demnächst bei der Webprogrammierung) schon so manches Bein gestellt.
Benutzeravatar
noisefloor
User
Beiträge: 4209
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Und ob man Django oder Flask verwenden sollte, ist vermutlich eine Glaubensfrage
Nee, das ist ja auch nicht das gleiche. Vi und emacs sind ja schon eher zwei gleichwertige Editoren mit völlig anderem Ansatz zum Bedienen.

Flask ist ein "kleines" Rahmenwerk, was außer Routing (über das sehr mächtige Werkzeug, was im Hintergrund werkelt) und Template-Engine (wie Jinja2, die wahrscheinlich populärste Template-Enginge für Python) erstmal nichts kann. Aber es gibt einen Haufen Erheiterungen.

Django hat ziemlich massive "batteries included", also außer Routing und Template Engine (wenn man möchte auch Jinja2) eine ORM zu Datenbankanbindung, Formularframework, Authentifizierungsframework, Admin-Frontend etc. und das ganze ziemlich hoch integriert. Und auch für Django gibt es einen Haufen Erweiterungen.

"Besser" in dem Sinne ist keins, es kommt halt drauf an, was man sucht & möchte. Für mich persönlich ist die hohe Integration von Django praktischer, weswegen ich vor ein paar Jahren mal von Bottle (ohne Bottle gäbe es wahrscheinlich heute kein Flask ;-) ) + SQLAlchemy + Wtforms zu Django gewechselt bin.

Außer den beiden ist noch Tornado halbwegs populär und FastAPI ist gerade hip, wenn man (Web-) APIs bauen möchte.

Gruß, noisefloor
nezzcarth
User
Beiträge: 1778
Registriert: Samstag 16. April 2011, 12:47

zegru hat geschrieben: Montag 23. November 2020, 15:53 Wie ich das verstanden habe, wird in Flask ja die fertige HTML Seite aus einem Template generiert.
Schon. Aber das ist keine Spezialität von Flask, sondern halt allgemein die Art, wie Webframeworks funktionieren. Ganz grob vereinfacht hast du klassischerweise HTML – das ist für die logische Struktur eines Dokuments zuständig; CSS – das ist für die visuelle Gestaltung des durch HTML logisch ausgezeichneten Dokuments zuständig; und JavaScript – das sorgt für dynamische Features im Browser. Das Webframework generiert das HTML, JavaScript und CSS werden meistens statisch ausgeliefert. Der Browser bastelt das alles zusammen und zeigt dir die Webseite an. Es gibt auch andere Modelle (z.B. solche, die stärker auf JavaScript im Browser setzen und die Daten vom Server als JSON beziehen), aber das ist halt die klassische Variante.
zegru hat geschrieben: Montag 23. November 2020, 16:23 Und ob man Django oder Flask verwenden sollte, ist vermutlich eine Glaubensfrage (sowas wie Emacs oder vi)?
Einen minimalen Glaubensaspekt gibt es vielleicht schon, aber überwiegend sind das doch recht handfeste Gründe, die dafür sprechen, das eine oder das andere zu verwenden. Bei Django bekommt man halt einen großen Werkzeugkasten von fertigen Bausteinen und Teillösungen für übliche Fragen und Teilaufgaben bei der Entwicklung von Webanwendung geliefert. Wenn man Django beherrscht, kann man damit sehr schnell typische Webanwendungen bauen, die sich an Best Practices usw. halten. Flask ist da deutlich minimalistischer.
__blackjack__ hat geschrieben: Montag 23. November 2020, 16:04 Das CSS schreibt man in der Regel auch nicht selbst, sondern verwendet eines der CSS-Rahmenwerke wie Bootstrap.
Wenn man in erster Linie Entwickler ist und eine Website haben möchte, die anständig aussieht, responsiv ist und sich an Best Practices hält, sehe ich das auch so. Unkritisiert ist dieser Trend zu CSS Frameworks aber (wie fast alles) natürlich nicht. Gerade bei hauptberuflichen Designern ist mir da vermehrt Kritik begegnet; die sagen einem dann, die Websites sehen alle gleich aus, das CSS ist viel überfrachteter, als es sein müsste, jemand, der CSS anständig beherrscht und sich mit Design auskennt, braucht so etwas nicht usw.
zegru
User
Beiträge: 66
Registriert: Freitag 9. Oktober 2020, 09:22

Für mich wäre es profaner: Ich tendiere deswegen in Richtung Flask, weil ich ich ein Projekt habe, das schon eine Kommandozeilen-Schnittstelle hat, und hier verwende ich bereits SQLAlchemy.
Benutzeravatar
__blackjack__
User
Beiträge: 14136
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Zum Vergleich Flask/Bottle zu Django würde ich eher sagen das ist wie Vim/Emacs vs. PyCharm. Man kann pluginfähige Editoren in der Regel bis zur vollen IDE aufrüsten, muss es aber nicht, und hat dabei oft auch die Wahl zwischen verschiedenen Plugins für vergleichbare Features, während das bei einer IDE alles schon eingebaut ist, auch Sachen die man vielleicht nicht braucht, oder wo man dann keine Wahl hat ein anderes Plugin zu verwenden.

@nezzcarth: Aus Sicht eines Designer eine berechtigte Kritik, aber ich bin halt keiner und ich kann und will da keine Zeit investieren etwas selbst zu schreiben und mit zig Browsern zu testen, wenn es das schon fertig getestet gibt. Das die Webseiten alle gleich aussehen ist ein Pluspunkt aus meiner Sicht, weil dann die Webseite genau so aussieht und funktioniert wie all die anderen, die der Anwender schon gewohnt ist. Liegt aber vielleicht auch wieder daran das ich Webanwendungen schreibe und keine trendy, abgefahrenen, Webseiten ”designe”. Das soll in erster Linie für den Benutzer verständlich sein und funktionieren und sich nicht hauptsächlich optisch von allen anderen unterscheiden. 🙂

(Ich weiss noch wie ich damals das erste mal Bootstrap im Intranet eingesetzt habe und damit mein CSS mit meinem tollen Farbschema durch langweilige Vorgaben ersetzt wurden. Die Kollegen waren aus meiner Sicht völlig überzogen erfreut. 😉)
“It is easier to change the specification to fit the program than vice versa.” — Alan J. Perlis
zegru
User
Beiträge: 66
Registriert: Freitag 9. Oktober 2020, 09:22

Wie ich das verstanden habe, ist Django out of the box mächtiger als Flask out of the box. Kann man eigentlich Flask im Normalbetrieb soweit pimpen, dass sie dann gleich mächtig sind? Und ist das der Normalfall, oder wäre das eher ungewöhnlich?
Bolitho
User
Beiträge: 219
Registriert: Donnerstag 21. Juli 2011, 07:01
Wohnort: Stade / Hamburg
Kontaktdaten:

Du kannst auch zu Flask entsprechende Pakete für z.B. Userverwaltung oder Sessions oder sonstwas hinzufügen. Damit erreichst du dann ähnliche Funktionalitäten.

Und ja, es ist üblich auch Flask zu erweitern und weitere Pakete zu nutzen. Django 1:1 zu kopieren ist dabei aber nicht die Motivation, eher die passende Funktionalität für mein Projekt. Wie ein Maßanzug halt im Gegensatz zum Anzug von der Stange.
nezzcarth
User
Beiträge: 1778
Registriert: Samstag 16. April 2011, 12:47

@zegru:
Dass man Flask soweit aufrüstet, dass es funktional im Prinzip äquivalent zu Django ist, ist aus meiner Sicht unüblich. Django bringt mehr Komponenten mit, als man in so manchen Projekten jemals brauchen wird. Django hat einen eigenen ORM, der eng mit dem automatisch generierten Admin-Panel verzahnt ist, ein Templatesystem, Caching- und Sessionframeworks, Authentifizierungsmechanismen, Krempel für Formulare, Security, Mailversand, Internationalisierung, Newsfeeds, Sitemaps, etc. pp. Und die Komponenten sind alle aufeinander abgestimmt und integriert. Das ist, wo Django eben seine Stärke hat. In der Form wirst du das mit Standardkomponenten so nicht oder nur mit extremem Aufwand erreichen.

Aber jemand, der Flask (oder auch bottle.py oder Pyramid) verwendet, möchte das auch eher gar nicht. Das ist halt der Ansatz ein anderer. Man fängt da mit einem relativ minimalistischen Kern an und baut nur das ein, was man braucht. Da wählst du denn eben den ORM oder die NoSQL-Datenbank, der/die für das konkrete Projekt passt (oder auch gar keinen, wenn du gar keine DB braucht), das Templatesystem, das dir zusagt, die Formularvalidierungsbibliothek, die passt (oder wieder gar keine, wenn du keine brauchst) usw. Django und Flask haben zwar irgendwo schon einen Überlappungsbereich, aber der Ansatz und die Motivation für die Verwendung sind in den Standardanwendungsfällen schon recht verschieden.

@__blackjack__:
Ich sehe das weitgehend auch so; ich bin eben auch kein Designer ;) Allerdings würde ich sagen "Design" bedeutet nicht unbedingt, dass man optische Hingucker gestaltet. Bei gutem Design kann es ja auch genau darum gehen, die Ziele zu erreichen, die du benannt hast, nämlich, dass die Seite intuitiv bedienbar und funktional ist, maßgeschneidert auf ein konkretes Projekt.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Ein wichtiger Punkt bei Django ist dass man an Flexibilität verliert, den um all diese Probleme im Framework zu lösen, muss dieses auch bestimmen wie diese Probleme gelöst werden.

Bei einem komplett neuen Projekt kann das egal sein aber wenn man konkrete Anforderung hat an Dinge wie Authentication oder Authorization hat, steht dir Django schnell im Weg. Djangos ORM ist auch so ein Problemfall, funktioniert ganz gut für einfache CRUD Queries und ist damit für typische Webanwendungen ganz ok. Wenn du da allerdings drüber hinaus möchtest, bist du schnell dabei SQL zu schreiben.

Flask ist zwar ein bisschen mehr Lego aber ich hab am Ende dann etwas dass genau auf mein Problem zugeschnitten ist anstatt die 08/15 Lösung die schon so irgendwie passt.

Zugegeben auch Django kann man sich natürlich anpassen aber dann ist’s auch nicht leichter als Flask.
Antworten