Next:
Impressum
Flask
1
Impressum
2
Einführung in Flask
2.1
Was ist Flask
2.2
Architektur und Designprinzipien
2.2.1
Minimalismus
2.2.2
Flexibilität
2.2.3
Explizite Konfiguration
2.2.4
WSGI-Kompatibilität
2.2.5
Architekturkomponenten
2.3
Installation und Projektsetup
2.3.1
Systemvoraussetzungen
2.3.2
Virtuelle Umgebung erstellen
2.3.3
Flask-Installation
2.3.4
Projektstruktur
2.3.5
Requirements-Datei
2.4
Erste Flask-Anwendung
2.4.1
Minimale Anwendung
2.4.2
Anwendungskomponenten erklärt
2.4.3
Erweiterte Anwendung mit Templates
2.4.4
Template-Dateien
2.4.5
Konfiguration und Umgebungsvariablen
2.4.6
Debug-Modus und Entwicklungsumgebung
2.4.7
Integration mit IIS
2.4.8
Erste Schritte zur Datenbankanbindung
3
Grundlagen der Anwendungsstruktur
3.1
Application Factory Pattern
3.1.1
Traditionelle Anwendungsstruktur
3.1.2
Application Factory Implementation
3.1.3
Vorteile des Factory Patterns
3.1.4
Anwendungsstart mit Factory
3.1.5
Testing mit Factory Pattern
3.2
Projektorganisation und Ordnerstruktur
3.2.1
Kleine bis mittlere Anwendungen
3.2.2
Große Anwendungen mit Blueprints
3.2.3
Dateiorganisation nach Funktionalität
3.2.4
Blueprint-Struktur
3.2.5
Datenbankmodell-Organisation
3.3
Konfigurationsmanagement
3.3.1
Basis-Konfigurationsklasse
3.3.2
Umgebungsspezifische Konfigurationen
3.3.3
MS-SQL Server Konfiguration
3.3.4
Konfiguration in der Application Factory
3.4
Umgebungsvariablen
3.4.1
.env-Dateien für Entwicklung
3.4.2
Environment-Loader
3.4.3
Windows-spezifische Umgebungsvariablen
3.4.4
IIS-Integration mit Umgebungsvariablen
3.4.5
Umgebungsvariablen-Validierung
3.4.6
Sicherheitsaspekte
4
Routing und URL-Handling
4.1
Route-Definitionen
4.1.1
Grundlegende Route-Definition
4.1.2
Route-Parameter und Konverter
4.1.3
Verfügbare Konverter
4.1.4
Benutzerdefinierte Konverter
4.1.5
URL-Präfixe und Subdomains
4.1.6
Route-Optionen
4.2
HTTP-Methoden (GET, POST, PUT, DELETE)
4.2.1
GET-Requests
4.2.2
POST-Requests
4.2.3
PUT-Requests
4.2.4
PATCH-Requests
4.2.5
DELETE-Requests
4.2.6
Mehrere Methoden pro Route
4.3
URL-Parameter und Query-Parameter
4.3.1
URL-Parameter verarbeiten
4.3.2
Query-Parameter verarbeiten
4.3.3
Query-Parameter-Validierung
4.3.4
Kombinierte Parameter
4.4
URL-Generierung mit url_for
4.4.1
Grundlegende URL-Generierung
4.4.2
URL-Generierung mit Parametern
4.4.3
URL-Generierung mit Query-Parametern
4.4.4
URL-Generierung in Templates
4.4.5
URL-Generierung für statische Dateien
4.4.6
URL-Generierung mit Blueprint-Endpunkten
4.4.7
Externe URLs und absolute URLs
4.4.8
URL-Generierung für verschiedene Umgebungen
4.4.9
Fehlerbehandlung bei URL-Generierung
5
Request- und Response-Handling
5.1
Request-Objekt und Datenverarbeitung
5.1.1
Grundlegende Request-Eigenschaften
5.1.2
Header-Verarbeitung
5.1.3
Request-Kontext und Threading
5.1.4
Request-Daten-Eigenschaften
5.2
Formulardaten verarbeiten
5.2.1
Einfache Formularverarbeitung
5.2.2
Multiselect und Checkbox-Verarbeitung
5.2.3
Datei-Upload-Verarbeitung
5.2.4
Formulardaten-Validierung
5.3
JSON-Daten verarbeiten
5.3.1
JSON-Request-Verarbeitung
5.3.2
Verschachtelte JSON-Strukturen
5.3.3
JSON-Serialisierung mit benutzerdefinierten Objekten
5.4
Response-Objekte erstellen
5.4.1
Einfache Response-Erstellung
5.4.2
Response-Objekte mit make_response
5.4.3
Streaming-Responses
5.4.4
Binäre Responses
5.5
HTTP-Statuscodes
5.5.1
Erfolgreiche Responses (2xx)
5.5.2
Client-Fehler (4xx)
5.5.3
Server-Fehler (5xx)
5.5.4
Bedingte Responses
6
Templates und Jinja2
6.1
Template-Engine Grundlagen
6.1.1
Funktionsweise von Jinja2
6.1.2
Template-Verarbeitung
6.1.3
Template-Syntax Grundlagen
6.1.4
Datentypen in Templates
6.1.5
Objektzugriff in Templates
6.2
Template-Vererbung
6.2.1
Base-Template erstellen
6.2.2
Child-Template implementieren
6.2.3
Block-Hierarchie und super()
6.3
Variablen und Filter
6.3.1
Standard-Filter
6.3.2
Benutzerdefinierte Filter
6.3.3
Filter-Verkettung
6.4
Kontrollstrukturen in Templates
6.4.1
Bedingte Anzeige
6.4.2
Schleifen und Iteration
6.4.3
Erweiterte Template-Logik
6.5
Makros und Includes in Templates
6.5.1
Makro-Definition und -verwendung
6.5.2
Makro-Import und -verwendung
6.5.3
Include-Direktiven
6.5.4
Makros mit Call-Blöcken
7
Statische Dateien
7.1
CSS- und JavaScript-Integration
7.1.1
Verzeichnisstruktur für statische Dateien
7.1.2
CSS-Integration in Templates
7.1.3
CSS-Organisation und Struktur
7.1.4
JavaScript-Integration und Modulstruktur
7.1.5
Seitenspezifisches JavaScript
7.1.6
Template-Integration mit JavaScript
7.2
Bilder und andere Medien
7.2.1
Bildorganisation und Bereitstellung
7.2.2
Responsive Bilder und Performance
7.2.3
CSS für Bildbehandlung
7.2.4
SVG-Icons und Grafiken
7.2.5
Datei-Upload und -verwaltung
7.3
Asset-Management
7.3.1
Datei-Versionierung und Caching
7.3.2
CSS- und JavaScript-Minifikation
7.3.3
Asset-Pipeline und Build-Tools
7.4
Bootstrap-Integration
7.4.1
Bootstrap über CDN einbinden
7.4.2
Lokale Bootstrap-Installation
7.4.3
Bootstrap-Komponenten in Templates
7.4.4
Bootstrap-Formulare
7.4.5
Custom Bootstrap-Anpassungen
8
Formulare und Validierung
8.1
HTML-Formulare erstellen
8.1.1
Grundlagen der HTML-Formular-Struktur
8.1.2
Eingabefeld-Typen und deren Verwendung
8.1.3
Flask-Route für Formularverarbeitung
8.2
Datenvalidierung
8.2.1
Serverseitige Validierung verstehen
8.2.2
Benutzerdefinierte Validierungsfunktionen
8.3
CSRF-Schutz
8.3.1
CSRF-Angriffe verstehen
8.3.2
CSRF-Token-Implementierung
8.3.3
Template-Integration für CSRF-Schutz
8.3.4
Flask-WTF für professionellen CSRF-Schutz
8.4
Fehlerbehandlung bei Formularen
8.4.1
Strukturierte Fehlerbehandlung
8.4.2
Template für Fehleranzeige
9
RESTful APIs
9.1
REST-Prinzipien verstehen
9.1.1
HTTP-Methoden in REST-APIs
9.2
Flask
@app.route
vs. MethodView
9.2.1
Grenzen des Dekorator-Ansatzes
9.2.2
MethodView: Objektorientierte API-Entwicklung
9.2.3
Erweiterte MethodView-Patterns
9.3
Flask-RESTful und Flask-Restx
9.3.1
Flask-RESTful: Fokus auf Einfachheit
9.3.2
Flask-Restx: APIs mit automatischer Dokumentation
9.4
Serialisierung mit Marshmallow
9.4.1
Grundlagen der Marshmallow-Serialisierung
9.4.2
Erweiterte Marshmallow-Features
9.5
API-Dokumentation
9.5.1
OpenAPI/Swagger-Integration
9.6
Content Negotiation
9.6.1
Accept-Header und Mime-Types