Alle reden von Web 2.0 Was ist ein Web-Development-Framework? Die zentralen Komponenten von TurboGears Python Kid-Templating CherryPy SQLObject Weitere Komponenten Installation Python Eggs Python Package Index (Python Cheeseshop) Easylnstall Installation mit Easylnstall
13 13 14 14 15 15 16 16
1.5
Literatur
20
2
Grundlagen der Web-Programmierung mit Python
21
2.1 2.2
Was ist ein Protokoll? URIundURL
21 22
2.3
DasHTTP-Protokoll Startzeile einer Anfrage (Initial Request Line) Startzeile einer Antwort (Initial Response Line) Header Serverseitige Web-Programmierung mit Python Ein einfacher HTTP-Server Zugriff auf statische Ressourcen CGI-Skripte CGI-Skripte auf einem lokalen Rechner testen CGI-Skripte auf einem Rechner mit Internetkonnektivität installieren Übergabe von Daten an das CGI-Skript
23 24 24 24
1.4
2.4
16 17 17 18 19
Cookies
2.5
Beispiel: Besuchszähler CGI-Skripte debuggen Clientseitige Programmierung Zugriff auf Ressourcen - das Modul urllib
Idee, Geschichte, Versionen und Installation Einführendes Beispiel
47 47
3.3
Der Controller-Baum
51
3.4
3.5
Übergabe von Daten Daten aus einem HTML-Formular übergeben Daten in einem Pfad übergeben - die Methode default() Konfiguration Einführendes Beispiel: Wie ändert man den Port des Servers? Aufbau der Konfiguration Entwicklungsmodus und Produktionsmodus
3.6
Filter
53 54 56 60 60 61 62 63
3.7
Statische HTML-Seiten (staticjilter) Mehrere Filter für statische Seiten Eine einzige statische HTML-Seite für mehrere URLs (static_filter.file)
63 66 67
3.8
Persistenz von Sitzungsdaten Speichern von Sitzungsdaten in Formularen Nutzung des Session-Objekts Konfiguration des Session-Managements Abbruch einer Session Dateien hochladen
68 68 71 73 77 77
3.9
3.10 XML-RPC Anfrage Ein CherryPy-Server für XML-RPCs Das Python-Modul xmlrpclib 3.11 Zugriff auf die HTTP-Header einer Anfrage (Request)
80 80 81 81 84
3.12 Zugriff auf die HTTP-Header einer Antwort (Response) 3.13 Der Quiz-Server - die Minimalversion Das MVC-Pattern (Model View Controller) Der Projektordner Model View Controller
85
3.14 Referenz Konfiguration
87 89 90 C\C\ 90 93 96 101 101
Inhaltsverzeichnis
cherrypy.request cherrypy.response Änderungen bei CherryPy 3.0 3.15 Literatur
Grundlagen relationaler Datenbanken Vom ER-Diagramm zum Relationenschema Eine MySQL-Datenbank erstellen Installation und Start des MySQL-Servers Login User einrichten Tabellen anlegen Datensätze einfügen Anfragen an eine SQL-Datenbank Anbindung eines Python-Programms an eine MySQL-Datenbank Verändern einer Tabelle Daten abfragen ORM mit SQLObject Abbildung einer Klasse durch eine Tabelle Objekte erzeugen und verändern Implementierung von l:n-Beziehungen (one to many) Implementierung von n:m-Beziehungen (many to many) Anfragen (Queries) SQLObject-Klassen erweitern SQL-Metadaten Quiz-Server Referenz MySQL Verarbeitung von zeitbezogenen Daten mit dem Python-Modul datetime SQLObject Literatur
5
Gestaltung der Präsentation
5.1
CSS-Stylesheets Stildeklarationen verwenden Stile für unterschiedliche Ausgabemedien Formate für HTML-Elemente deklarieren Klassen - das Attribut class Dekorative Hyperlinks Individualformate - das Attribut id Bedingte Formate Schriftgestaltung Absolute und relative Größenangaben
147 147 148 150 151 152 154 155 157 158 160
4.2
4.3
4.4
4.5 4.6
Rapid Web Development mit Python
141 142 145
Inhaltsverzeichnis
5.2
5.3
Eine Präsentation für den Quiz-Server Vorbereitung Statische Elemente - die CSS-Datei Gemeinsam verwendete Elemente - Match-Templates und Template-Funktionen Templates für die Webseiten Das Präsentationsmodul (view.py)
5.4
Referenz CSS Kid
5.5
Literatur
6
TurboGears Eine erste Anwendung mit tg-admin quickstart Das Projekt anlegen Die Struktur des Projektordners Den Server starten Die Grundstruktur modifizieren und verstehen
6.1
)
Farben Layout: Positionen, Abstände und Rahmen Templating mit Kid Einführendes Beispiel XHTML Template-Objekte erzeugen und serialisieren Einbettung von Python-Programmblöcken (PIs) Substitution von Ausdrücken Dynamisch erzeugter Text-Inhalt von XML-Elementen (py:replace, pyxontent) Bedingte Darstellung (py:if, py:strip) Dynamische Attribute Template-Funktionen (py:def) Match-Templates (py:match) Wiederverwendung von Template-Komponenten (py:extends) Layout-Templates (pydayout) Reihenfolge der Verarbeitung von py:-Attributen Funktionen Präsentationsalgorithmik und MVC
6.2
Präsentationsmanagement Das Master-Template Anwendungsbeispiel
6.3
Modellmanagement Beispielprojekt: Modellierung von Marathonläufen Vorbereitung des Datenbanksystems Die Konfiguration modifizieren Das Modell definieren
Inhaltsverzeichnis Tabellen erzeugen und löschen mit tg-admin sql Den Zustand des Modells manipulieren mit tg-admin shell Die Datenbank manipulieren mit CatWalk Das Modell in das Projekt integrieren
241 243 243 245
6.4
Logging
254
6.5
Sprünge in Controller-Methoden - redirect()
256
6.6
Validierung und Behandlung von Eingabefehlern
258
6.7
Identitätsmanagement Einführendes Beispiel Das Identitätsmanagement im Controller anwenden Das Identitätsmanagement in Kid-Templates anwenden
267 268 277 278
6.8
Juristische Vorgaben für den Betrieb einer Web-Plattform
279
6.9
Das K-Quiz mit TurboGears Analyse Projekt anlegen und Datenbank vorbereiten Modell Das gemeinsame Stylesheet Allgemeiner Aufbau des Moduls controller.py Startseite und Anwendungsfälle „ Login" und „ Logout" Anwendungsfall „Quiz spielen" Anwendungsfall „Registrieren" Anwendungsfall „Aufgabe editieren" Anwendungsfall „Aufgaben entfernen"
280 280 281 282 285 288 290 295 300 304 308
6.10 Das Projekt auf einem Produktionsserver veröffentlichen Konfigurationsdateien Die Projekte hochladen Die Datenbank auf dem Produktionsserver vorbereiten Den Server starten Ein Python-Egg für das Projekt erzeugen Das Python-Egg des Projekts auf dem Produktionsserver installieren