Lernwechsel von Flask zu Django

Django, Flask, Bottle, WSGI, CGI…
Antworten
Karlirex
User
Beiträge: 126
Registriert: Dienstag 18. August 2020, 18:27

Hallo Freunde der Webprogrammierung,

ich habe bisher ein zwei kleine Projekte mit Flask umgesetzt und dabei entweder SQLite oder MySQL verwendet. Dabei habe ich mir meine Strukturen für "klassisches" Flask erbaut. .env-file für die Configdaten, direkte Config.py, Routes.py von Models.py getrennt, die passenden Routen erstellt, @login_required decorator davor und und und.

Da ich bei meinem neuen Projektvorhaben noch etwas mehr auf den Punkt Sicherheit und Komplexizität setzen muss ("Größenbedingt und Datenbedingt") habe ich mich zu dem Thema etwas umlesen und stoße auf einige Baustellen, was so Dinge wie Admin-Zugang, Mail-Versand etc angeht und erhalte immer die Meldung, das Django dies schon OOTB "kann".
Ich bin aber wenig vertraut mit Django und sehe mich schon dem ein oder anderen Problem, wenn ich mir die grundlegende Projektstruktur anschaue.

Daher die Frage, ist ein Wechsel "überhaupt" so sinnvoll und was sind die besten Wege einen solchen Wechsel anzugehen? Wieder die Grundlagen-Tutorials und Google?
Falls ja, wird wohl immer so bleiben in der Entwicklung "haha".

Vielleicht gibt es ja den ein oder anderen, der so einen Wechsel schonmal gemacht hat und weiß, welche "Probleme" man vermeiden könnte.

Mit besten Grüßen
Karlirex
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ich habe vor vielen Jahren den Wechsel von Bottle + SQLAlchemy + Wtforms auf Django gewechselt. Wobei meine Projekte mit Bottle eher simple waren und Bottle IMHO auch nochmal eine Stufe einfacher ist als Flask. Und Flask zumindest heutzutage ja sehr weit erweiterbar ist.

Nach meinem Verständnis lässt die Flask auch ziemlich stark mit externen Modulen zu Django-ähnlicher Funktionalität erweitern, was zu Problemen bei der Gesamtintegration führen kann (aber nicht muss). Django hat halt viele "batteries included".

Ob der Wechsel für die jetzt sinnvoll ist oder nicht können wir wohl letztendlich nicht beurteilen.

Zum Lernen gibt es zwei sehr empfehlenswerte Tutorials: einmal das offizielle Django Tutorial auf der Django Webseite und das "Django for Girls" Tutorial. Des Weiteren ist die sonstige Doku von Django auch sehr umfangreich, da findet man eigentlich auch ziemlich viel.

Gruß, noisefloor
Karlirex
User
Beiträge: 126
Registriert: Dienstag 18. August 2020, 18:27

noisefloor hat geschrieben: Freitag 8. April 2022, 16:49 Hallo,

ich habe vor vielen Jahren den Wechsel von Bottle + SQLAlchemy + Wtforms auf Django gewechselt. Wobei meine Projekte mit Bottle eher simple waren und Bottle IMHO auch nochmal eine Stufe einfacher ist als Flask. Und Flask zumindest heutzutage ja sehr weit erweiterbar ist.

Nach meinem Verständnis lässt die Flask auch ziemlich stark mit externen Modulen zu Django-ähnlicher Funktionalität erweitern, was zu Problemen bei der Gesamtintegration führen kann (aber nicht muss). Django hat halt viele "batteries included".

Ob der Wechsel für die jetzt sinnvoll ist oder nicht können wir wohl letztendlich nicht beurteilen.

Zum Lernen gibt es zwei sehr empfehlenswerte Tutorials: einmal das offizielle Django Tutorial auf der Django Webseite und das "Django for Girls" Tutorial. Des Weiteren ist die sonstige Doku von Django auch sehr umfangreich, da findet man eigentlich auch ziemlich viel.

Gruß, noisefloor
Danke dir :) ich schaue es mir mal an. Und bin gespannt, wie ich mich dabei so schlagen werde. Fand so manche Dinge, wie z.B. das "migrate", welches von Flask eher unbekannt ist schon "irritierend" :D und naja ich seh mal weiter, es soll ja eben sehr gut skalierbar sein etc, was sicherlich deutliche Vorteile mit sich bringt.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@Karlirex: Flask hat kein "migrate", da dies Datenbank-bezogen ist und bei Django zu dem integrierten ORM gehört. Bei Flask würde dafür in Verbindung mit SQLAlchemy z.B. Alembic verwendet werden. Also auch hier ein externes Tool.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Meiner Meinung nach ist Corey Schafer's Django-Tutorial-Reihe auf YouTube unfassbar gut für den Einstieg: https://www.youtube.com/watch?v=UmljXZI ... Nfx2UY6U4p

Zum python manage.py migrate: https://docs.djangoproject.com/en/4.0/t ... igrations/

Django lernen ist halt nicht nur Django, sondern auch Konzepte des Web Developments verstehen. :)

Viel Erfolg
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Karlirex
User
Beiträge: 126
Registriert: Dienstag 18. August 2020, 18:27

@naheliegend danke dir.
Ich hab Flask beispielsweise auch mit dem Corey-Schafer begonnen zu lernen :D
Karlirex
User
Beiträge: 126
Registriert: Dienstag 18. August 2020, 18:27

Seh ich das Richtig, dass ich für quasi alles über die Forms, zu den Models zur View gehen muss? Also mir HTML seitig nicht wirklich groß eine solche Form verändern kann und auch nicht Daten per JS erstellt in diese Formen eintragen kann?
Klingt für mihc anch aktueller Rechere etwas starr.
(Ich versuche per Button die Aktuelle Browserzeit in der Datenbank zu speichern..und scheitere bisher entweder an der richtigen Übergabe (None) oder an der Automatischen Eintragung der Zeit in das "Form"-Feld, da ich eigentlich nur einen <p>-Tag brauche der von JS aktualisiert wird...
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Du musst gar nichts.
Forms sind eine Möglichkeit schnell Formulare zu generieren, und die sind schon bis zu einem bestimmten Punkt individualsierbar - zum Beispiel indem man eigene Widgets schreibt oder bestehende anpasst.
Aberd du kannst natürlich auch das Frontend komplett ohne Forms bauen. Es ist ein Hilfsmittel - kein Muss.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Django macht es dir einfach, Standard-Aufgaben zu erledigen. Du bist aber nicht daran gebunden und kannst alles, was sich per Request an den Server senden lässt, dort auf die von dir gewünschte Weise verarbeiten. Auch der Response muss nicht notwendigerweise eine gerenderte html-Seite sein.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Seh ich das Richtig, dass ich für quasi alles über die Forms, zu den Models zur View gehen muss?
Nee. Wenn ein Request des Browsers kommt, geht der immer an ein View. Ein Funktion an eine URL binden ist ja die Grundidee hinter WSGI, dem De-Facto Standard für Python Webanwendungen / -frameworks. Was der View dann mit den Daten im Request macht liegt bei dir, also was du programmierst.

Was du clientseitig mit JS machst ist Django egal - Django läuft serverseitig. Ob der Request vom Drücken eines `submit` Buttons kommt oder von der Webseite asynchron im Hintergrund mittels AJAX oder fetch-API oder ... ist Django gleich.

Gruß, noisefloor
Antworten