Vorwort

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Flask hebt sich von anderen Frameworks ab, weil es Entwicklern die volle kreative Kontrolle über ihre Anwendungen überlässt. Vielleicht hast du schon einmal den Ausdruck "Kampf gegen das Framework" gehört. Das passiert bei den meisten Frameworks, wenn du dich entscheidest, ein Problem mit einer Lösung zu lösen, die nicht die offizielle ist. Es könnte sein, dass du eine andere Datenbank-Engine oder eine andere Methode zur Benutzerauthentifizierung verwenden möchtest. Wenn du von dem Weg abweichst, den die Entwickler des Frameworks vorgegeben haben, wird dir das eine Menge Kopfzerbrechen bereiten.

Das ist bei Flask nicht der Fall. Magst du relationale Datenbanken? Prima! Flask unterstützt sie alle. Vielleicht bevorzugst du eine NoSQL-Datenbank? Auch kein Problem. Flask funktioniert auch mit ihnen. Möchtest du deine eigene Datenbank-Engine verwenden? Brauchst du überhaupt keine Datenbank? Auch kein Problem. Mit Flask kannst du die Komponenten deiner Anwendung auswählen oder sogar deine eigene schreiben, wenn du das möchtest. Es werden keine Fragen gestellt!

Der Schlüssel zu dieser Freiheit ist, dass Flask von Anfang an so konzipiert wurde, dass es erweitert werden kann. Es verfügt über einen robusten Kern, der die grundlegenden Funktionen enthält, die alle Webanwendungen benötigen, und erwartet, dass der Rest von den vielen Erweiterungen von Drittanbietern im Ökosystem bereitgestellt wird - und natürlich von dir.

In diesem Buch stelle ich meinen Workflow für die Entwicklung von Webanwendungen mit Flask vor. Ich erhebe nicht den Anspruch, dass dies der einzig wahre Weg ist, um Anwendungen mit diesem Framework zu entwickeln. Du solltest meine Entscheidungen als Empfehlungen und nicht als Evangelium betrachten.

Die meisten Softwareentwicklungsbücher bieten kleine und konzentrierte Codebeispiele, die die verschiedenen Funktionen der Zieltechnologie isoliert demonstrieren, während der "Klebstoff"-Code, der notwendig ist, um diese verschiedenen Funktionen in eine voll funktionsfähige Anwendung umzuwandeln, vom Leser selbst herausgefunden wird. Ich verfolge einen völlig anderen Ansatz. Alle Beispiele, die ich vorstelle, sind Teil einer einzigen Anwendung, die sehr einfach beginnt und in jedem weiteren Kapitel erweitert wird. Diese Anwendung beginnt mit nur ein paar Codezeilen und endet als gut ausgestattete Blogging- und Social-Networking-Anwendung.

Für wen dieses Buch ist

Du solltest ein gewisses Maß an Python-Kodiererfahrung haben, um dieses Buch optimal nutzen zu können. Obwohl das Buch keine Vorkenntnisse über Flask voraussetzt, wird vorausgesetzt, dass du Python-Konzepte wie Pakete, Module, Funktionen, Dekoratoren und objektorientierte Programmierung gut verstehst. Eine gewisse Vertrautheit mit Ausnahmen und der Diagnose von Problemen anhand von Stack Traces ist sehr nützlich.

Während du die Beispiele in diesem Buch durcharbeitest, wirst du viel Zeit in der Kommandozeile verbringen. Du solltest mit der Kommandozeile deines Betriebssystems vertraut sein.

Moderne Webanwendungen kommen um den Einsatz von HTML, CSS und JavaScript nicht herum. Die Beispielanwendung, die in diesem Buch entwickelt wird, macht natürlich Gebrauch davon, aber das Buch selbst geht nicht sehr ins Detail, was diese Technologien und ihre Verwendung angeht. Ein gewisses Maß an Vertrautheit mit diesen Sprachen ist empfehlenswert, wenn du komplette Anwendungen ohne die Hilfe eines Entwicklers entwickeln willst, der sich mit clientseitigen Techniken auskennt.

Ich habe die Begleitanwendung zu diesem Buch als Open Source auf GitHub veröffentlicht. Obwohl es auf GitHub möglich ist, die Anwendung als ZIP- oder TAR-Datei herunterzuladen, empfehle ich dir dringend, einen Git-Client zu installieren und dich mit der Versionskontrolle des Quellcodes vertraut zu machen (zumindest mit den grundlegenden Befehlen zum Klonen und Auschecken der verschiedenen Versionen der Anwendung direkt aus dem Repository). Die kurze Liste der Befehle, die du brauchst, findest du unter "So arbeitest du mit dem Beispielcode". Du wirst die Versionskontrolle auch für deine eigenen Projekte nutzen wollen, also nimm dieses Buch als Vorwand, um Git zu lernen!

Schließlich ist dieses Buch kein vollständiges und erschöpfendes Nachschlagewerk über das Flask-Framework. Die meisten Funktionen werden abgedeckt, aber du solltest dieses Buch durch die offizielle Flask-Dokumentation ergänzen.

Wie dieses Buch organisiert ist

Dieses Buch ist in drei Teile gegliedert.

In Teil I, Einführung in Flask, werden die Grundlagen der Entwicklung von Webanwendungen mit dem Flask-Framework und einigen seiner Erweiterungen behandelt:

  • Kapitel 1 beschreibt die Installation und Einrichtung des Flask-Frameworks.

  • In Kapitel 2 tauchst du mit einer grundlegenden Anwendung direkt in Flask ein.

  • In Kapitel 3 wird die Verwendung von Templates in Flask-Anwendungen vorgestellt.

  • In Kapitel 4 werden Webformulare vorgestellt.

  • In Kapitel 5 werden Datenbanken vorgestellt.

  • In Kapitel 6 wird die E-Mail-Unterstützung vorgestellt.

  • In Kapitel 7 wird eine Anwendungsstruktur vorgestellt, die für mittlere und große Anwendungen geeignet ist.

Teil II, Beispiel: Eine Social-Blogging-Anwendung, baut Flasky auf, die Open-Source-Anwendung für Blogs und soziale Netzwerke, die ich für dieses Buch entwickelt habe:

  • In Kapitel 8 wird ein System zur Benutzerauthentifizierung implementiert.

  • In Kapitel 9 werden Benutzerrollen und -berechtigungen eingeführt.

  • Kapitel 10 implementiert Benutzerprofilseiten.

  • In Kapitel 11 wird die Blogging-Schnittstelle erstellt.

  • Kapitel 12 setzt Follower ein.

  • Kapitel 13 implementiert Benutzerkommentare für Blogbeiträge.

  • InKapitel 14 wird eine Anwendungsprogrammierschnittstelle (API) implementiert.

Teil III, Die letzte Meile, beschreibt einige wichtige Aufgaben, die nicht direkt mit der Anwendungscodierung zusammenhängen und die vor der Veröffentlichung einer Anwendung berücksichtigt werden müssen:

  • In Kapitel 15 werden verschiedene Unit-Testing-Strategien im Detail beschrieben.

  • Kapitel 16 gibt einen Überblick über die Techniken der Leistungsanalyse.

  • Kapitel 17 beschreibt die Bereitstellungsoptionen für Flask-Anwendungen, einschließlich traditioneller, cloudbasierter und containerbasierter Lösungen.

  • In Kapitel 18 findest du weitere Ressourcen.

Wie man mit dem Beispielcode arbeitet

Die in diesem Buch vorgestellten Codebeispiele stehen unter https://github.com/miguelgrinberg/flasky zum Download bereit .

Die Commit-Historie in diesem Repository wurde sorgfältig erstellt, um der Reihenfolge zu entsprechen, in der die Konzepte in diesem Buch vorgestellt werden. Es wird empfohlen, mit dem Code zu arbeiten, indem du dir die ältesten Commits ansiehst und dich dann durch die Commit-Liste bewegst, wenn du mit dem Buch vorankommst. Alternativ kannst du auf GitHub auch jeden Commit als ZIP- oder TAR-Datei herunterladen.

Wenn du dich entscheidest, Git für die Arbeit mit dem Quellcode zu verwenden, dann musst du den Git-Client installieren, den du von http://git-scm.com herunterladen kannst . Der folgende Befehl lädt den Beispielcode mit Git herunter:

$ git clone https://github.com/miguelgrinberg/flasky.git

Der Befehl git clone installiert den Quellcode von GitHub in einen flasky2 Ordner, der im aktuellen Verzeichnis erstellt wird. Dieser Ordner enthält nicht nur den Quellcode, sondern auch eine Kopie des Git-Repositorys mit dem gesamten Verlauf der Änderungen an der Anwendung.

Im ersten Kapitel wirst du aufgefordert, die erste Version der Anwendung auszuchecken, und dann wirst du an den richtigen Stellen angewiesen, in der Historie vorwärts zu gehen. Der Git-Befehl, mit dem du dich durch die Änderungshistorie bewegen kannst, ist git checkout. Hier ein Beispiel:

$ git checkout 1a

Das im Befehl referenzierte 1a ist ein Tag: ein benannter Punkt in der Commit-Historie des Projekts. Dieses Repository ist entsprechend den Kapiteln des Buches getaggt, sodass das im Beispiel verwendete Tag 1a die Anwendungsdateien auf die in Kapitel 1 verwendete Anfangsversion setzt. Den meisten Kapiteln ist mehr als ein Tag zugeordnet. So sind zum Beispiel die Tags 5a, 5b und so weiter inkrementelle Versionen, die in Kapitel 5 vorgestellt werden.

Wenn du einen git checkout Befehl wie eben gezeigt ausführst, zeigt Git eine Warnmeldung an, die dich darüber informiert, dass du dich in einem "abgetrennten HEAD"-Status befindest. Das bedeutet, dass du dich nicht in einem bestimmten Codezweig befindest, der neue Commits annehmen kann, sondern dass du einen bestimmten Commit in der Mitte der Änderungshistorie des Projekts betrachtest. Es gibt keinen Grund, sich von dieser Meldung beunruhigen zu lassen, aber du solltest bedenken, dass eine weitere git checkout fehlschlägt, wenn du in diesem Zustand Änderungen an Dateien vornimmst, weil Git nicht weiß, was es mit den Änderungen anfangen soll. Um mit dem Projekt weiterarbeiten zu können, musst du also die geänderten Dateien wieder in ihren ursprünglichen Zustand zurückversetzen. Am einfachsten geht das mit dem Befehl git reset:

$ git reset --hard

Dieser Befehl zerstört alle lokalen Änderungen, die du vorgenommen hast. Du solltest also alles speichern, was du nicht verlieren willst, bevor du diesen Befehl verwendest.

Neben dem Auschecken der Quelldateien für eine Version der Anwendung musst du an bestimmten Stellen zusätzliche Einrichtungsaufgaben durchführen. In manchen Fällen musst du zum Beispiel neue Python-Pakete installieren oder Updates für die Datenbank vornehmen. Du wirst darauf hingewiesen, wenn dies notwendig ist.

Von Zeit zu Zeit möchtest du vielleicht dein lokales Repository mit dem auf GitHub aktualisieren, wo Fehlerbehebungen und Verbesserungen vorgenommen wurden. Die Befehle, die dies ermöglichen, sind:

$ git fetch --all
$ git fetch --tags
$ git reset --hard origin/master

Die Befehle git fetch werden verwendet, um die Commit-Historie und die Tags in deinem lokalen Repository aus dem entfernten Repository auf GitHub zu aktualisieren, aber nichts davon betrifft die eigentlichen Quelldateien, die mit dem folgenden Befehl git reset aktualisiert werden. Auch hier gilt: Wenn du den Befehl git reset verwendest, gehen alle lokalen Änderungen, die du vorgenommen hast, verloren.

Eine weitere nützliche Funktion ist die Anzeige aller Unterschiede zwischen zwei Versionen der Anwendung. Das kann sehr nützlich sein, um eine Änderung im Detail zu verstehen. In der Befehlszeile ist dies mit dem Befehl git diff möglich. Um zum Beispiel den Unterschied zwischen den Revisionen 2a und 2b zu sehen, verwende:

$ git diff 2a 2b

Die Unterschiede werden als Patch angezeigt, was kein sehr intuitives Format ist, um Änderungen zu überprüfen, wenn du nicht an die Arbeit mit Patch-Dateien gewöhnt bist. Du wirst feststellen, dass die grafischen Vergleiche auf GitHub viel einfacher zu lesen sind. Die Unterschiede zwischen den Revisionen 2a und 2b kannst du dir zum Beispiel auf GitHub unter https://github.com/miguelgrinberg/flasky/compare/2a...2b ansehen.

Code-Beispiele verwenden

Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Wenn du eine CD-ROM mit Beispielen aus den O'Reilly-Büchern verkaufst oder verteilst, ist eine Genehmigung erforderlich. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Erlaubnis erforderlich.

Wir schätzen die Namensnennung, verlangen sie aber nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel: "Flask Web Development, 2nd Edition, von Miguel Grinberg (O'Reilly). Copyright 2018 Miguel Grinberg, 978-1-491-99173-2."

Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter kontaktieren

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursiv

Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.

Constant width

Wird für Befehlszeilenausgaben und Programmlistings sowie innerhalb von Absätzen verwendet, um auf Befehle und Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter zu verweisen.

Constant width bold

Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.

Constant width italic oder spitze Klammern (<>)

Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.

Tipp

Dieses Element steht für einen Tipp oder eine Anregung.

Hinweis

Dieses Element steht für einen allgemeinen Hinweis.

Warnung

Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.

O'Reilly Safari

Hinweis

Safari (ehemals Safari Books Online) ist eine mitgliedschaftsbasierte Schulungs- und Nachschlageplattform für Unternehmen, Behörden, Lehrkräfte und Einzelpersonen.

Mitglieder haben Zugang zu Tausenden von Büchern, Schulungsvideos, Lernpfaden, interaktiven Tutorials und kuratierten Playlists von über 250 Verlagen, darunter O'Reilly Media, Harvard Business Review, Prentice Hall Professional, Addison-Wesley Professional, Microsoft Press, Sams, Que, Peachpit Press, Adobe, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett und Course Technology, um nur einige zu nennen.

Weitere Informationen erhältst du unter http://oreilly.com/safari.

Wie du uns kontaktierst

Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Nord
  • Sebastopol, CA 95472
  • 800-998-9938 (in den Vereinigten Staaten oder Kanada)
  • 707-829-0515 (international oder lokal)
  • 707-829-0104 (Fax)

Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter http://bit.ly/flask-web-dev2 aufrufen .

Wenn du Kommentare oder technische Fragen zu diesem Buch stellen möchtest, sende eine E-Mail an

Weitere Informationen zu unseren Büchern, Kursen, Konferenzen und Neuigkeiten findest du auf unserer Website unter http://www.oreilly.com.

Finde uns auf Facebook: http://facebook.com/oreilly

Folge uns auf Twitter: http://twitter.com/oreillymedia

Schau uns auf YouTube: http://www.youtube.com/oreillymedia

Danksagungen

Ich hätte dieses Buch nicht allein schreiben können. Ich habe viel Hilfe von meiner Familie, meinen Kollegen, alten Freunden und neuen Freunden bekommen, die ich auf dem Weg gefunden habe.

Ich möchte Brendan Kohler für seine detaillierte technische Überprüfung und für seine Hilfe bei der Gestaltung des Kapitels über Anwendungsprogrammierschnittstellen danken. Ich stehe auch in der Schuld von David Baumgold, Todd Brunhoff, Cecil Rock und Matthew Hugues, die das Manuskript in verschiedenen Stadien der Fertigstellung geprüft und mir sehr nützliche Ratschläge gegeben haben, was ich behandeln und wie ich das Material gliedern sollte.

Das Schreiben der Code-Beispiele für dieses Buch war ein erheblicher Aufwand. Ich bin dankbar für die Hilfe von Daniel Hofmann, der die Anwendung einer gründlichen Codeüberprüfung unterzog und mich auf einige Verbesserungen hinwies. Ich bin auch meinem Sohn Dylan Grinberg dankbar, der seine Minecraft-Sucht für ein paar Wochenenden unterbrochen hat und mir geholfen hat, den Code auf verschiedenen Plattformen zu testen.

O'Reilly hat ein wunderbares Programm namens Early Release, das ungeduldigen Lesern den Zugang zu Büchern ermöglicht, während sie noch geschrieben werden. Einige meiner Early-Release-Leserinnen und -Leser haben sich die Mühe gemacht und sich mit mir über ihre Erfahrungen beim Durcharbeiten des Buches ausgetauscht, was zu erheblichen Verbesserungen geführt hat. Ich möchte mich insbesondere bei Sundeep Gupta, Dan Caron, Brian Wisti und Cody Scott für ihre Beiträge zu diesem Buch bedanken.

Die Mitarbeiter von O'Reilly Media sind immer für mich da gewesen. Vor allem möchte ich meiner wunderbaren Lektorin Meghan Blanchette für ihre Unterstützung, ihren Rat und ihre Hilfe vom ersten Tag an danken. Meg hat die Erfahrung, mein erstes Buch zu schreiben, zu einer unvergesslichen Erfahrung gemacht.

Abschließend möchte ich der großartigen Flask-Community ein großes Dankeschön aussprechen.

Zusätzlicher Dank für die zweite Ausgabe

Ich möchte mich bei Ally MacDonald, meiner Lektorin für die zweite Auflage dieses Buches, sowie bei Susan Conant, Rachel Roumeliotis und dem gesamten Team von O'Reilly Media für ihre kontinuierliche Unterstützung bedanken.

Die technischen Prüfer dieser Ausgabe haben hervorragende Arbeit geleistet, indem sie mich auf verbesserungswürdige Bereiche hingewiesen und mir neue Perspektiven aufgezeigt haben. Ich möchte Lorena Mesa, Diane Chen und Jesse Smith für ihre großartigen Beiträge in Form von Feedback und Vorschlägen danken. Ich bin auch meinem Sohn Dylan Grinberg sehr dankbar für seine Hilfe, der alle Codebeispiele sorgfältig getestet hat.

Get Flask Web Development, 2. Auflage now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.