Einleitung 1 Rapid Web Development 1.1 Alle reden von Web 2.0 1.2 Was ist ein Web-Development-Framework? 1.3 Die zentralen Komponenten von TurboGears Python Kid-Templating CherryPy SQLObject Weitere Komponenten 1.4 Installation Python Eggs Python Package Index (Python Cheeseshop) Easylnstall Installation mit Easylnstall 1.5 2 Grundlagen der Web-Programmierung mit Python 2.1 Was ist ein Protokoll? 2.2 URIundURL 2.3 DasHTTP-Protokoll Startzeile einer Anfrage (Initial Request Line) Startzeile einer Antwort (Initial Response Line) Header 2.4 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 Cookies Beispiel: Besuchszähler CGI-Skripte debuggen 2.5 Clientseitige Programmierung Zugriff auf Ressourcen - das Modul urllib 11 14 14 15 15 17 17 18 19 20 21 21 22 23 25 25 26 27 29 29 30 34 35 Bibliografische Informationen http://d-nb.info/98363 digitalisiert durch
2.6 2.7 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3. 3.14 E-Mails senden mit SMTP HTTP CGI smtplib CherryPy Idee, Geschichte, Versionen und Installation Einführendes Beispiel Der Controller-Baum Ü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 Filter Statische HTML-Seiten (staticjilter) Mehrere Filter für statische Seiten Eine einzige statische HTML-Seite für mehrere URLs (static_filter.file) Persistenz von Sitzungsdaten Speichern von Sitzungsdaten in Formularen Nutzung des Session-Objekts Konfiguration des Session-Managements Abbruch einer Session Dateien hochladen XML-RPC Anfrage Ein CherryPy-Server für XML-RPCs Das Python-Modul xmlrpclib Zugriff auf die HTTP-Header einer Anfrage (Request) Zugriff auf die HTTP-Header einer Antwort (Response) Der Quiz-Server - die Minimalversion Das MVC-Pattern (Model View Controller) Der Projektordner Model View Controller Konfiguration 40 43 43 44 45 46 51 53 54 56 60 60 61 62 63 63 66 67 68 68 71 73 77 77 80 80 81 81 84 85 87 89 90 C\C\ 90 93 96 101 101
3.15 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 5 5.1 cherrypy.request cherrypy.response Änderungen bei CherryPy 3.0 Object Relational Mappinq (ORM) 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 MySQL Verarbeitung von zeitbezogenen Daten mit dem Python-Modul datetime SQLObject Gestaltung der Präsentation 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 104 105 105 106 109 111 112 1 115 115 118 119 120 123 125 127 1 5 1 8 140 140 141 142 145 1 1 148 150 151 152 154 155 157 158 0
5.2 5.3 5.4 5.5 6 6.1 6.2 6.3 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 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) CSS Kid TurboGears Eine erste Anwendung mit tg-admin quickstart Das Projekt anlegen Die Struktur des Projektordners Den Server starten Die Grundstruktur modifizieren und verstehen Präsentationsmanagement Das Master-Template Anwendungsbeispiel Modellmanagement Beispielprojekt: Modellierung von Marathonläufen Vorbereitung des Datenbanksystems Die Konfiguration modifizieren Das Modell definieren 4 4 172 172 174 176 178 181 183 185 188 190 193 196 198 200 200 203 207 207 208 210 211 218 219 219 223 2 225 225 226 227 228 230 232 233 236 239 239 U U r\a-t ) ' 1 cntvnckter.prtss 1
Tabellen erzeugen und löschen mit tg-admin sql 1 Den Zustand des Modells manipulieren mit tg-admin shell 3 Die Datenbank manipulieren mit CatWalk 3 Das Modell in das Projekt integrieren 5 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 267 Einführendes Beispiel 268 Das Identitätsmanagement im Controller anwenden 277 Das Identitätsmanagement in Kid-Templates anwenden 278 6.8 Juristische Vorgaben für den Betrieb einer Web-Plattform 279 6.9 Das K-Quiz mit TurboGears 280 Analyse 280 Projekt anlegen und Datenbank vorbereiten 281 Modell 282 Das gemeinsame Stylesheet 285 Allgemeiner Aufbau des Moduls controller.py 288 Startseite und Anwendungsfälle Login" und Logout" 290 Anwendungsfall Quiz spielen" 295 Anwendungsfall Registrieren" 300 Anwendungsfall Aufgabe editieren" 304 Anwendungsfall Aufgaben entfernen" 308 6.10 Das Projekt auf einem Produktionsserver veröffentlichen 312 Konfigurationsdateien 3 Die Projekte hochladen 3 Die Datenbank auf dem Produktionsserver vorbereiten 314 Den Server starten 314 Ein Python-Egg für das Projekt erzeugen 315 Das Python-Egg des Projekts auf dem Produktionsserver installieren 315 6.11 3 tg-admin 3 Funktionen 3 Validatoren 317 6.12 318 Stichwortverzeichnis 319