![]() ![]() |
Sie sind hier: ZWikiSeiten > ZBBasicObject Zopebuch: Inhaltsverzeichnis Kapitel 3: Verwendung grundlegendender Zope-ObjekteWenn Sie eine Webanwendung mit Zope aufbauen, erstellen Sie die Anwendung aus Objekten. Je nach Design sind unterschiedliche Objekte für unterschiedliche Teile Ihrer Anwendung zuständig. Einige Objekte speichern Ihre Inhaltsdaten, wie Dokumente von Textverarbeitungsprogrammen, Arbeitsblätter (Spread-Sheets) und/oder Bilder. Einige Objekte steuern, wie dynamische Web-Inhalte erzeugt werden, indem sie Eingaben aus einem Web-Formular akzeptieren oder E-Mails senden. Einige Objekte kontrollieren, wie Ihre Inhalte angezeigt oder Ihrem Betrachter präsentiert werden, zum Beispiel als Web-Seite oder per E-Mail. Im Allgemeinen übernehmen Zope-Objekte drei Arten von Aufgabenbereichen:
Das Wort Objekt ist ein schwer beladener Ausdruck. Je nach Ihrem Wissenshintergrund kann es eine große Anzahl verschiedener Dinge bedeuten. In diesem Kapitel können Sie sich ein Zope-Objekt als ein Stück Software vorstellen, das Sie mit Hilfe eines Web-Browsers steuern und bearbeiten können. Zope bringt viele integrierte Objekte mit, die Ihnen helfen, verschiedene Aufgaben durchzuführen. Sie können auch Zope-Objekte (Produkte) von Drittherstellern installieren, um Zopes Leistungsspektrum zu erweitern. Dieses Kapitel erklärt die grundlegendsten Objekte, und wie sie funktionieren. Sie können vollständig funktionierende Zope-Sites mit Hilfe der wenigen Grundobjekte erstellen, die in diesem Kapitel erläutert werden. Dieses Kapitel ist in etwa gemäß der drei obigen Kategorien Inhalt, Logik und Darstellung strukturiert. Es gibt andere Arten von Objekten in Zope, die nicht eindeutig in einen dieser drei Aufgabenbereiche passen. Diese sind am Ende des Kapitels erklärt. Zope-Ordner verwendenOrdner (Folders, Anm. d. Üb.) sind die Bausteine von Zope. Der Zweck eines Ordners ist, andere Objekte zu enthalten und Objekte dadurch zu gliedern, dass er sie in verschiedene Gruppen unterteilt. Ordner können alle Arten von Objekten einschließlich anderer Ordner enthalten, so dass Sie Ordner ineinander verschachteln können, um eine Baumstruktur von Ordnern zu erzeugen. Diese Art Anordnung von Ordnern innerhalb von Ordnern verleiht Ihrer Zope-Site Struktur. Eine gute Struktur ist sehr wichtig, da fast alle Aspekte von Zope (von Sicherheit über Verhalten zu Darstellung) von der Ordnerstruktur Ihrer Site beeinflusst werden. Ordnerstrukturen sollten jedem sehr vertraut sein, der schon einmal mit Dateien und Ordnern mit einem Dateimanagerprogramm auf seinem Computer gearbeitet hat, wie dem Microsoft Windows Explorer oder irgendeinem der beliebten X-Dateimanager wie dem xfm, dem kfm, konqueror, Gnome-Dateimanager u.v.a. Das Zope-Management-Interface versucht, diesen bekannten Programmen so ähnlich wie möglich zu sein, so dass Sie mit der Verwaltung von Zope-Objekten ebenso vertraut sind, wie wenn Sie Dateien über Ihren Computer verwalten würden. Ordnerinhalte verwaltenIn Kapitel 2, "Zope verwenden", haben Sie Objekte erstellt und Objekte verschoben. Kurz gesagt, Sie erstellen Objekte in Ordnern durch das Wählen des Namens des gewünschten Objekts in der Auswahlliste am oberen Rand der Inhaltsübersicht. Dann füllen Sie das Erstellformular aus und schicken es ab. Ein neues Objekt wird dem aktuellen Ordner danach hinzugefügt. Über das verwenden der Schaltflächen Cut, Copy, Paste und Rename können Sie Objekte zwischen Ordnern bewegen. Objekte importieren und exportierenSie können Objekte mit Hilfe von Export und Import von einem Zope-System zu einem anderen bewegen. Sie können alle Arten von Zope-Objekten in eine Exportdatei exportieren. Diese Datei kann dann in jedes andere Zope-System importiert werden. Sie können sich das Exportieren eines Objekt wie das Klonen eines Stücks Ihres Zope-Systems in eine Datei vorstellen, die Sie sich dann von Rechner zu Rechner bewegen lässt. Sie können nun diese Datei nehmen und den Klon auf jeden anderen Zope-Server aufsetzen. Stellen Sie sich vor, Sie haben einige Dokumente in einem Zope-Ordner. Wenn Sie gerade jene Objekte zum Zope-System Ihres Freunds kopieren wollten, könnten Sie den Ordner exportieren und die Exportdatei per E-Mail an Ihren Freund senden, der ihn dann importieren könnte. Nehmen wir an, Sie haben einen Ordner für Hausaufgaben, die Sie aus dem schulischen Zope-Server exportieren und mit nach Hause nehmen wollen, um daran an Ihrem heimischen Zope-Server weiterzuarbeiten. Sie können einen solchen Ordner Namens "Heimarbeit" in Ihrem Stammordner erstellen. Gehen Sie zum Ordner, der Ihren Ordner Heimarbeit enthält. Wählen Sie den Ordner Heimarbeit (im Beispiel Abbildung 3-1 homeWork) durch Abhaken des nebenstehenden Kontrollkästchens aus. Klicken Sie dann die Schaltfläche Import/Export. Sie sollten sich jetzt in der Ordner-Ansicht Import/Export befinden, wie in Abbildung 3-1 gezeigt. Abbildung 3-1 Die Import-/Export-Ansicht Es gibt zwei Bereiche in dieser Darstellung. Die obere Hälfte ist der Exportbereich, und die untere Hälfte ist der Importbereich. Um ein Objekt aus dieser Darstellung zu exportieren, geben Sie die ID des Objekts in das erste Formularfeld "Export object id" ein. In unserem Fall füllt Zope dieses Feld schon für uns aus, da wir den Ordner Heimarbeit bereits in der letzten Darstellung ausgewählt haben. Die nächste Formularoption lässt Sie wählen, ob Sie die Exportdatei auf Ihren Computer herunterzuladen oder sie auf dem Server lassen wollen. Wenn Sie "Download to local machine" ("Auf lokalen Recher laden") aktivieren und auf die Schaltfläche Export klicken, fordert Sie Ihr Web-Browser dazu auf, die Exportdatei herunterzuladen. Wenn Sie "Save to file on server" ("Datei auf Server speichern") wählen, sichert Zope die Datei auf dem selben Rechner, auf dem Zope läuft und Sie müssen die Datei von diesem Standort selbst abholen. Die Exportdatei wird in Zopes var-Verzeichnis auf Ihrem Server geschrieben. Standardmäßig haben Exportdateien die Endung .zexp. Im Allgemeinen ist es praktischer, die Exportdatei auf Ihren lokalen Rechner herunterzuladen. Manchmal ist es stattdessen angenehmer, die Datei auf den Server zu sichern, zum Beispiel wenn Sie eine langsame Verbindung haben und die Exportdatei sehr groß ist oder wenn Sie nur versuchen, das exportierte Objekt zu einer anderen Zope-Instanz auf dem selben Rechner zu bringen. Das letzte Feld im Exportformular ist das "XML format?"-Kontrollkästchen. Wenn Sie dieses Kästchen ankreuzen, wird das Objekt im eXtensible Markup Language (XML)-Format exportiert. Ist dieses Kästchen nicht angekreuzt, wird die Datei in Zopes binärem Format exportiert. Das XML-Format ist beim Herunterladen zwar wesentlich größer, aber es ist für Menschen lesbar und kann als XML syntaktisch analysiert werden. Bis jetzt ist das einzige Werkzeug, das dieses Format versteht, Zope selbst, aber in Zukunft wird es vielleicht andere Hilfsprogramme geben, die Zopes XML Format verstehen können. Im Allgemeinen sollten Sie dieses Kästchen unangekreuzt lassen, es sei denn, Sie sind neugierig darauf, wie das XML-Format aussieht und wollen es von Hand prüfen. Klicken Sie die Schaltfläche Export und sichern Sie Ihre Exportdatei Heimarbeit.zexp (Die Dateierweiterung zexp wird automatisch vergeben). Nehmen wir jetzt an, Sie sind nach Hause gegangen und wollen die Datei in Ihren heimischen Zope-Server importieren. Zuerst müssen Sie die Exportdatei in das import-Verzeichnis Ihrer Zope-Installation kopieren. Dieses Verzeichnis finden Sie auf dem Rechner, auf dem Zope installiert ist. Gehen Sie jetzt zur Import-/Export-Ansicht des Ordners, in dem Sie den Import ausführen wollen. Geben Sie den Namen der Exportdatei in das Formualrfeld "Import file name" ein und klicken Sie auf Import, um die Objekte in Zope zu importieren. Zope bietet Ihnen die Möglichkeit, entweder mit "Take ownership of imported objects" das importierte Objekt in Besitz zu nehmen oder mit "Retain existing ownership information" vorhandene Besitz-Informationen beizubehalten. Das Thema Besitz wird in Kapitel 7, "Benutzer und Sicherheit" näher erörtert . Lassen Sie zunächst das Kontrollkästchen "Take ownership of imported objects" abgehakt. Nachdem Sie die Datei importiert haben, sollten Sie ein neues Objekt im Zope-Ordner vorfinden, in dem Sie den Import durchgeführt haben. Zum Üben wiederholen Sie dieselbe Export- und Import-Vorgehensweise. Beachten Sie, dass Sie kein Objekt mit derselben ID in einen Ordner importieren können, in dem bereits ein vorhandenes Objekt mit gleichem Namens liegt. Deshalb müssen Sie sie in einen Ordner importieren, der noch keinen Ordner Heimarbeit enthält. Temporäre OrdnerTemporäre Ordner (Temporary Folders) sind Zope-Ordner die dazu benutzt werden zeitlich begrenzte Objekte zu speichern. Temporäre Ordner verhalten sich fast genauso wie normale Ordner mit drei wesentlichen Unterschieden:
Standardmäßig gibt es einen Temporären Ordner Namens temp_folder in Ihrem Stammordner. Sie werden vielleicht bemerken, das sich in temp_folder ein Objekt Namens "Session Data Container" befindet. Dies ist ein Objekt, das von Zopes Standardkonfiguration der Sitzungsverwaltung benutzt wird. Für weitere Informationen zum Thema Sitzungen sehen Sie später im Abschnitt "Sitzungen verwenden" in diesem Kapitel nach. Temporäre Ordner speichern ihren Inhalt eher im Arbeitsspeicher als in der Zope-Datenbank. Dies prädestiniert sie zum Speichern kleiner Objekte in die häufig geschrieben wird, wie Sitzungsdaten. Dennoch ist es eine schlechte Idee Temporäre Ordner zu verwenden, um große Objekte zu speichern, weil Ihrem Rechner dadurch möglicherweise nicht mehr genügend Arbeitsspeicher zur Verfügung steht. Zope-Seitenvorlagen benutzenIn Zope 2.5,wurde ein neuer mächtiger Objekttyp Namens Page Templates ("Seitenvorlagen") eingeführt. Seitenvorlagen ermöglichen es, dynamische Darstellungen für eine Web-Seite zu definieren, indem man eine HTML-Vorlage schreibt. Der HTML-Code der Vorlage wird dadurch dynamisch, dass spezielle XML-Namensraum-Elemente in den HTML-Code eingefügt werden, die das dynamische Verhalten für die Seite definieren. Seitenvorlagen sind aus mehreren Gründen sehr leistungssfähig:
Zope-Seitenvorlagen erstellenErzeugen Sie einen Ordner namens Vertrieb im Stammordner root. Klicken Sie auf den Ordner Verkäufe und wählen Sie dann Page Template aus der Produktauswahlliste aus, über die Sie in Kapitel 2 etwas erfahren haben. Dieses Vorgehen bringt Sie zum Erstellformular für eine Seitenvorlage. Tragen Sie als Id "Vertriebsseite" und als Titel "Vorlage für Vetriebsmitarbeiter" und klicken Sie auf Add. Sie haben erfolgreich eine Seitenvorlage erstellt. Jedoch ist deren Inhalt ein Standardblindtext. Fahren Sie also mit dem nächsten Schritt, der Bearbeitung des Inhalts, fort. Zope-Seitenvorlagen bearbeitenDer einfachste Weg eine Seitenvorlage zu bearbeiten ist, im Zope-Management-Interface auf ihren Namen oder ihr Symbol zu klicken. Wenn Sie auf eines dieser Elemente klicken, werden Sie zur Edit-Ansicht der Seitenvorlage weitergeleitet, die Ihnen einen Texteingabebereich zur Verfügung stellt in dem Sie die Vorlage bearbeiten können. Ersetzen Sie den ursprünglichen Inhalt, der bereits in der Seitenvorlage steht, mit dem folgenden HTML-Code:
und klicken Sie auf Save. Nun können Sie auf den View-Reiter klicken um sich die Seitenvorlage anzusehen. Diese Vorlage im Speziellen macht nichts besonderes und besitzt auch kein dynamisches Verhalten. In späteren Abschnitten dieses Kapitels, werden wir dynamisches Verhalten hinzufügen. In Kapitel 5, werden Sie Seitenvorlagen noch wesentlich ausführlicher verwenden um dynamische Darstellungen zu erstellen. Zope-Seitenvorlagen hochladenAngenommen Sie möchten Ihre HTML-Vorlagen lieber nicht in einem Web-Browser bearbeiten oder Sie haben schon vorhandene HTML-Seiten die Sie in Zope bringen möchten. Zope ermöglicht Ihnen Ihre vorhandenen HTML-Dateien hochzuladen und Sie in Seitenvorlagen umzuwandeln. Wählen Sie Page Template aus der Produktauswahlliste. Dies bringt Sie zum Erstellformular, das wir vorher gesehen haben. Das letzte Formularelement im Erstellformular ist die Schaltfläche Browse. Klicken Sie auf die Schaltfläche. Ihr Browser öffnet daraufhin ein Dialogfenster zur Dateiauswahl. Wählen Sie die Textdatei auf Ihrem Rechner aus, die Sie in die Seitenvorlage hochladen möchten. Geben Sie eine Id für das neue Dokument an und klicken Sie auf Add. Nachdem Sie auf Add geklickt haben, gelangen Sie wieder zurück zur Verwaltungsansicht. Hier sehen Sie Ihre neue Seitenvorlage. Zope-Dokumente verwendenDokumente enthalten Text. In Webanwendungen verwendet man Dokumente im Allgemeinen, um Web-Seiten zu erstellen. Man kann Dokumente auch verwenden, um Textdateien, Textteile oder HTML-Code wie Sidebars oder Kopfzeilen zu speichern. Zusätzlich zum Speichern von Text erlaubt ein Dokument Ihnen, den Text über das Netz zu bearbeiten. Zope hat mehrere verschiedene Arten von Dokumenten. Das wichtigste ist DTML-Dokument. DTML steht für Document Template Markup Language. Andere Objekttypen von Drittherstellern (im Allgemeinen "Produkte", engl. Products, genannt) und stehen auf Orten wie Zope.org zur Verfügung. Sie erweitern Ihre Installation dahingehend, dass andere Arten von textlichem und nicht-textlichem Inhalt unterstützt werden. DTML-DokumenteDTML-Dokumente verwendet man, um Web-Seiten und Dokumentenabschnitte, wie Sidebars zu erstellen, die Webseiten gemeinsam nutzen. DTML-Dokumente können Scripting-Befehle in DTML (Zopes tag-basierter Scripting-Sprache) enthalten. Die Mischung aus HTML und DTML erzeugt dynamische Web-Seiten. DTML-Dokumente sind auch dazu geeignet, gemeinsam genutzten Inhalt, wie häufige Dokumentstrukturen, zu erstellen. DTML-Dokumente erstellenKlicken Sie auf den Ordner Vertrieb und wählen Sie danach DTML Document aus der Produktauswahlliste. Dieses Vorgehen bringt Sie zum Erstellformular für ein DTML-Dokument. Geben Sie die ID "Vetriebsmitarbeiter" und den Titel "Die Dschungel-Vertriebsmitarbeiter" an und klicken Sie auf Add. Sie haben erfolgreich ein DTML-Dokument erstellt. Jedoch ist dessen Inhalt ein Standardblindtext. Fahren Sie also mit dem nächsten Schritt, der Bearbeitung des Inhalts, fort. DTML-Dokumente bearbeitenDie einfachste und schnellste Art, ein DTML-Dokument zu bearbeiten, ist über das Management-Interface. Um ein Dokument auszuwählen, klicken Sie auf dessen Namen oder sein Symbol, was das in Abbildung 3-2 gezeigte Formular öffnet. Abbildung 3-2 Bearbeiten eines DTML-Dokuments. Diese Ansicht zeigt ein Textfeld, in welchem Sie den Inhalt Ihres Dokuments bearbeiten können. Wenn Sie auf die Schaltfläche Change klicken, bestätigen Sie alle Änderungen, die Sie im Textbereich vorgenommen haben. Sie können die Größe des Textbereichs mit den Schaltflächen Taller (höher), Shorter (kürzer), Wider (breiter) und Narrower (schmaler) kontrollieren. Sie können auch mit dem Eingabefeld File und der Schaltfläche Upload File eine neue Datei in das Dokument laden. Löschen Sie den Standardinhalt, der automatisch im aktuellen DTML-Dokument Vetriebsmitarbeiter erscheint. Fügen Sie in das Vetriebsmitarbeiter-Dokument folgenden HTML-Inhalt ein:
Nachdem Sie die Änderungen an Ihrem Dokument abgeschlossen haben, klicken Sie auf die Schaltfläche Change. Zope gibt eine Nachricht zurück, die Ihnen mitteilt, dass Ihre Änderungen angewendet wurden. Jetzt können Sie das Dokument durch Klicken des View-Reiters ansehen. Herzlichen Glückwunsch! Sie haben gerade Zope verwendet, um eine HTML-Seite zu erstellen. Sie können die Erstellung/Bearbeitung in einem Vorgang statt in zweien durchführen, indem Sie die Schaltfläche Add and Edit auf der Erstellseite verwenden. Sie können Ihren HTML-Code online bearbeiten und ihn sofort betrachten. Sie können sogar ganze Zope-Sites mit HTML-Dokumenten und Ordnern erstellen. Dieser Vorgang zeigt Ihnen nur einen Teil der Vorteile von Zope, er ist aber eine gute Art, sich mit Zope vertraut zu machen. Sie können auch dynamischen Inhalt in Zope verfassen und können jene, die nur am Design interessiert sind, ihre eigenen HTML-Web-Seiten auf diese Weise bearbeiten lassen. Eine HTML-Datei hochladenAngenommen Sie ziehen es vor, Ihre HTML-Dateien nicht in einem Web-Browser zu bearbeiten, oder Sie haben bereits einige vorhandene HTML-Seiten, die Sie gerne in Zope bringen würden. Zope erlaubt Ihnen, Ihre vorhandenen Textdateien hochzuladen und sie in DTML-Dokumente umzuwandeln. Wählen Sie DTML Document aus der Produktauswahlliste. Dies bringt Sie zum Erstellformular für DTML-Dokumente. Das letzte Formularfeld auf dem Erstellformular ist die Schaltfläche Browse. Klicken Sie auf diese Schaltfläche. Ihr Browser öffnet daraufhin einen Dateiauswahldialog. Wählen Sie die Textdatei auf Ihrem Computer aus, die Sie in dieses Dokument laden wollen. Geben Sie in eine Id für das neue Dokument und klicken Sie auf Add. Nach dem Klicken auf Add werden Sie zurück auf den Management-Seite gebracht. Dort sehen Sie Ihr neues Dokument. DTML-Dokumente betrachtenDer Hauptverwendungszweck eines DTML-Dokuments ist es, nützlichen Inhalt zu speichern. Der Hauptverwendungszweck dieses Inhalt ist es, betrachtet zu werden. DTML-Dokumente können auf mehrere verschiedene Arten betrachtet werden:
Über das Web aufrufenWie alle Zope-Objekte, basiert der URL eines DTML-Dokuments auf seiner ID-Kennung. Wenn man zum Beispiel ein DTML-Dokument namens Bob im Stammordner hat, dann wäre sein URL: http://localhost:8080/Bob Wenn sich Bob in einem Onkel genannten Unterordner befindet, dann wäre sein URL: http://localhost:8080/Onkel/Bob Es könnte auch andere DTML-Dokumente namens Rick, Danny und Louis im Onkel-Ordner geben. Auf sie greifen Sie durch das Web ebenso zu: http://localhost:8080/Onkel/Rick http://localhost:8080/Onkel/Danny http://localhost:8080/Onkel/Louis URLs in Objekte zu übersetzen, ist keine neue Idee, Web-Server wie Apache tun das die ganze Zeit über, sie übersetzen URLs in Dateien und Verzeichnisse auf einem Dateisystem. Zope führt diese einfache Idee weiter. In Zope sind URLs immer einfach zu lesen, weil sie sich leicht und einfach auf die Art abbilden lassen, wie Objekte in Zope organisiert sind. Darum haben wir Ihnen gesagt, dass die Struktur Ihrer Site der Schlüssel für den Erfolg Ihrer Site ist. Direkt zum URL eines DTML-Dokument zu gehen, wird durch das Web aufrufen genannt. Dies bewirkt, dass der Inhalt des DTML-Dokuments ausgewertet und an Ihren Web-Browser zurückgegeben wird. Im nächsten Kapitel über DTML sehen wir, was es bedeutet, wenn DTML ausgewertet wird, aber zunächst können Sie einfach mit DTML und simplem HTML-Inhalt experimentieren, um eine Vorstellung davon zu bekommen. Aufruf durch ein anderes ObjektBeim Verwenden von Zope sind Ihnen wahrscheinlich DTML-Beispiele wie dieses begegnet:
Hier kann man sehen, dass ein DTML-Objekt, standard_html_header, von dem Dokument aufgerufen wird. In diesem Fall ist der ausgewertete Inhalt des ersten Dokuments in den Inhalt dieses aufrufenden Dokuments eingefügt worden. Dies ist ein sehr grundlegendes Konzept in Zope und wird überall in diesem Buch verwendet. Änderungen an Dokumenten verfolgenDer Undo-Reiter ermöglicht es Ihnen eine oder mehrere Transaktion rückgängig zu machen. Erinnern Sie sich: Eine Transaktion kann eine Gruppe von Aktionen sein, die alle zur selben Zeit getätigt wurden. Wenn ein Dokument in einer Transaktion bearbeitet wurde, die auch das Verschieben eines Objektes beinhaltete, kann es sein, dass Sie zwar die Änderung am Dokument, nicht aber das Verschieben der Datei widerrufen wollen. Um das zu tun, können Sie zur History-Ansicht des Objekts gehen und sich die vorherigen Zustände des Objekts ansehen, wie in Abbildung 3-4 gezeigt. Abbildung 3-4 Die History-Ansicht. Dokumente unterstützen sogar die Idee der vergleichenden Revisionen, und ermöglichen Ihnen somit, Änderungen an Ihren Objekten zu verfolgen. Zum Beispiel erlauben DTML-Methoden und -Dokumente Ihnen, zwei Überarbeitungen auszuwählen und sie mit einander zu vergleichen. Sie könnten das auch dazu verwenden, um zu sehen, welche Leute Ihr Objekt verändert haben. Lassen Sie uns zum Beispiel sagen, dass Sie ein Dokument hatten, das eine Liste aller der Tiere in einem Zoo enthielt. Wenn eine(r) Ihrer KollegInnen dann beginnt diese Liste zu bearbeiten und sie speichert, können Sie die Protokollvergleichsfunktion verwenden, um die aktuellste "neue" Version der Datei mit der nächsten aktuellsten Version zu vergleichen. Dieser Vergleich wird im weitverbreiteten diff-Format angezeigt. Das Diff zeigt Ihnen die Zeilen an, die dem neuen Dokument hinzugefügt worden sind (über ein Plus), welche Zeile vom alten Dokument entfernt worden ist (über ein Minus), und welche Zeile ersetzt oder verändert worden ist (über ein Ausrufezeichen). Fernbearbeitung mit FTP, WebDAV und PUTZope ermöglicht Ihnen Dokumente direkt in Ihrem Web-Browser zu bearbeiten, obwohl dies nicht die einzige Art ist, wie Dokumente in Zope bearbeitet werden können. Für einfache Dokumente ist das Bearbeiten über das Web eine praktische Methode. Aber für große, komplexe Dokumente oder Dokumente, die eine spezielle Formatierung haben, ist es nützlich, in der Lage zu sein, den Editor zu verwenden, mit Sie am vertrautesten sind. DTML-Dokumente können per FTP, WebDAV und das HTTP-PUT-Protokoll bearbeitet werden. Viele HTML- und Texteditoren unterstützen diese Protokolle für das Bearbeiten von Dokumenten über entfernte Server. Jedes dieser Protokolle hat Vor- und Nachteile:
Mit einer dieser Methoden können Sie Ihren Inhalt mit einer Vielfalt an Hilfsprogrammen bearbeiten. In den nächsten paar Abschnitten werden wir Ihnen einige einfache Hilfsprogramme zeigen, die FTP verwenden, um Zope zu bearbeiten. Dokumente und Dateien mit WS_FTP hochladenFTP ist ein beliebter FTP-Client für Windows, den Sie verwenden können, um Dokumente und Dateien in Zope über das FTP-Protokoll hochzuladen. WS_FTP kann von der Ipswitch-Homepage heruntergeladen werden. Es gibt andere beliebte Windows-FTP-Clients und viele Web-Browser, wie Netscape und der Microsoft Internet Explorer besitzen FTP-Clients. Dieser Abschnitt gilt auch für andere FTP-Clients. In Kapitel 2, "Zope verwenden", bestimmten Sie den URL Ihres Zope-Systems mit Hilfe des Startprotokolls. Um herauszufinden, wie man den FTP-Server Ihres Zopes anspricht, folgen wir einer ähnlichen Vorgehensweise: ------ 2000-08-07T23:00:53 INFO(0) ZServer Medusa (V1.18) started at Mon Aug 7 16:00:53 2000 Hostname: erdnuss Port:8080 ------ 2000-08-07T23:00:53 INFO(0) ZServer FTP server started at Mon Aug 7 16:00:53 2000 Authorizer:None Hostname: erdnuss Port: 8021 ------ 2000-08-07T23:00:53 INFO(0) ZServer Monitor Server (V1.9) started on port 8099 Das Systemstartprotokoll sagt, dass der Zope-FTP-Server auf Port 8021 auf dem Rechner mit dem Namen erdnuss läuft. Wenn Sie WS_FTP starten, müssen Sie den Rechnernamen und Port-Informationen haben, so dass Sie sich an Zope mittels FTP anmelden können. Nach dem Eingeben des Rechnernamen und des Ports Ihres Zope-Servers klicken Sie auf die Schaltfläche Connect. WS_FTP bittet Sie jetzt um einen Benutzernamen und Kennwort. Geben Sie Ihren Verwaltungs-Benutzernamen und -Kennwort für das Zope-Management-Interface ein. Wenn Sie Ihren Benutzernamen und Ihr Kennwort korrekt eingeben haben, zeigt Ihnen WS_FTP, wie Ihre Zope-Site in FTP aussieht. Es gibt Ordner und Dokumente, die genau denen entsprechen, die Sie in Ihrem Zope-Stammordner im Web sehen, wie in Abbildung 3-3 gezeigt. Abbildung 3-3 Bearbeiten von Zope per FTP. Dateien zu und von Zope zu übertragen, ist eine sehr leichte Aufgabe mit WS_FTP. Auf der linken Seite des WS_FTP-Fensters ist eine Dateiauswahlliste, die die Dateien auf Ihrem lokalen Rechner darstellt. Die Dateiauswahlliste auf der rechten Seite des WS_FTP-Fensters stellt die Objekte in Ihrem Zope-System dar. Dateien von Ihrem Computer auf Zope oder wieder zurück zu übertragen, ist leicht. Wählen Sie die Datei aus die Sie übertragen wollen und klicken Sie entweder auf den linken Pfeil (Herunterladen) oder auf den rechten Pfeil (Hochladen). WS_FTP hat viele Funktionen und Benutzereinstellungen, die Sie benutzen können, um die Objektverwaltung auf entfernten Rechnern mit Zope sehr einfach zu gestallten. Zope-Objekte mit Emacs bearbeitenEmacs ist ein sehr beliebter Texteditor. In der Tat ist Emacs mehr als nur ein Texteditor, er ist eine ganze Kultur. Emacs gibt es in zwei Varianten, GNU Emacs und XEmacs. Beide dieser Varianten von Emacs können direkt über FTP arbeiten, um Zope-Dokumente und andere Textinhalte zu verändern. Emacs behandelt jedes entferne FTP-System wie jedes andere lokale Dateisystem, was die Fernverwaltung von Zope-Inhalten zu einem einfachen Vorgang werden lässt. Deshalb müssen Sie Emacs nicht verlassen, um Zope zu verwenden. Emacs liefert einen größeren Umfang an Textbearbeitungsmöglichkeiten, als die meisten Web-Browser-Textfelder. Emacs kann verwendet werden, um Dokumente direkt zu bearbeiten und Objekte per FTP zu verändern, Emacs ist deshalb eine nette Zope-Entwicklungsumgebung. Wenn Sie Zope starten, lässt Zope standardmäßig einen FTP-Server laufen, genau wie es einen HTTP-Server laufen lässt. Sie können zwar angeben, auf welchem Port der FTP-Server laufen soll wenn Sie Zope starten, standardmäßig ist dieser Port jedoch 8021. Um sich in Zope anzumelden, starten Sie Emacs. Die Datei die Sie aufrufen, um eine FTP-Verbindung herzustellen, hängt davon ab, welchen Texteditor Sie benutzen: XEmacs oder Emacs:
Dies öffnet eine Verbindung zum Ordner / des FTP-Servers der auf dem Server server und Port port läuft.
Das Leerzeichen wird eingefügt, indem man die Strg-Taste und die Taste Q gedrückt hält und danach die Leertaste drückt "Strg-Q ". Bei einer typischen Zope-Installation ist der Dateiname mit dem in XEmacs eine FTP-Sitzung mit Zope zu öffnen */user@localhost#8021:/*. Emacs fragt Sie nach einem Kennwort für die Anmeldung unter Zopes FTP-Server. Wenn Sie den Ordner / eines FTP-Server in Zope betrachten, listet Emacs den Inhalt des Stammordners auf: drwxrwx--- 1 Zope Zope 0 Dec 30 1998 Control_Panel drwxrwx--- 1 Zope Zope 0 Dec 30 1998 QuickStart drwxrwx--- 1 Zope Zope 0 Dec 30 1998 Vetrieb -rw-rw---- 1 Zope Zope 1024 May 3 1999 index_html -rw-rw---- 1 Zope Zope 1381 May 3 1999 standard_error_message -rw-rw---- 1 Zope Zope 55 Dec 30 1998 standard_html_footer -rw-rw---- 1 Zope Zope 81 Dec 30 1998 standard_html_header Sie können alle diese "Dateien" (die in Wirklichkeit Zope-Objekte sind) öffnen, indem Sie sie auf die übliche Emacs-Weise auswählen. Mit Emacs zu arbeiten ist sehr nützlich, aber für den größten Teil ist Emacs ein sehr komplexes Programm, das den meisten Leuten nicht gerade sehr zugänglich ist. Die meisten Macintosh-Nutzer wären zum Beispiel mit einem Hilfsprogramm wie Emacs nicht sehr vertraut. Es gibt viele "einfachere" Editoren, die benutzt werden können, die auch FTP und WebDAV verwenden. Tatsächlich ist WebDAV dafür entwickelt worden, mit Hilfsprogrammen wie Adobes GoLive und Macromedias Dreamweaver verwendet zu werden. DTML-Dokumente mit WebDAV bearbeitenWebDAV ist ein, verglichen mit HTTP oder FTP, neueres Internetprotokoll, so dass es weniger Clients gibt, die es unterstützen. Es herrscht jedoch viel Bewegung in der WebDAV-Bewegung, und immer mehr Clients werden entwickelt. Für weitere Informationen darüber, welche Programme das WebDAV-Protokoll unterstützen, sehen Sie auf der WebDAV-Homepage nach. WebDAV ist eine Erweiterung des HTTP-Protokolls, das viele Funktionen für das gleichzeitige Verfassen und Bearbeiten von Inhalten durch mehre Benutzer bereitstellt. WebDAV bietet Funktionen wie die Sperrung von Dateien, Versionsverwaltung und das Versehen von Dokumenten oder Objekten mit Eigenschaften. Weil die Ziele von WebDAV des Über-Das-Netz-Bearbeitens mit einigen der Ziele von Zope übereinstimmen, unterstützt Zope das WebDAV-Protokoll schon seit einiger Zeit. Das WebDAV-Protokoll entwickelt sich schnell, und immer wieder werden neue Funktionen hinzugefügt. Sie können jeden WebDAV-Client verwenden, um Ihre DTML-Dokumente durch einfaches Verweisen des Clients auf den URL Ihres Dokuments zu bearbeiten. Die meisten Clients veranlasst dies jedoch, zu versuchen, das Ergebnis der Dokument-Darstellung zu bearbeiten, nicht den Quelltext. Für Dokumente, die Zopes Vorlagensprache DTML verwenden, um dynamischen Inhalt wiederzugeben, kann dies ein Problem sein. Solange Clients nicht den neusten WebDAV-Standard unterstützen und den Unterschied zwischen dem Quelltext eines Dokuments und seines Darstellungsergebnisses verstehen, bietet Zope einen speziellen HTTP-Server an, den Sie mit einer Befehlszeilenoption Zope-Dateien verwendenZope-Dateien (Files) enthalten Rohdaten, genau wie die Dateien auf Ihren Computer. Viele Informationen wie Programme, Audio-Informationen, Videos und Dokumente werden im Internet und um die Welt als Dateien transportiert. Sie können Dateien verwenden, um jede Art von Information zu speichern, die Zope nicht ausdrücklich unterstützt, wie Flash-Dateien, Applets, Tarball-Archive usw. Dateien gehen nicht davon aus, dass ihr Inhalt in einem speziellen Format vorliegt, textuell oder andersgeartet. Dateien sind gut dafür geeignet, jede Art von binärem Inhalt zu speichern, der auf irgendeine Art nur rohe Computerinformation ist. Dateien sind auch dafür geeignet um textuellen Inhalt zu speichern, der kein DTML-Scripting benötigt. Jedes Datei-Objekt hat einen bestimmten Inhaltstyp (Content Type), der eine Standard-Internet-MIME-Kennzeichnung für einen Dateityp ist. Wenn Sie eine Datei in Zope hochladen, versucht Zope, den Inhaltstyp aufgrund des Namens der Datei zu erraten, aber Zope rät nicht immer richtig. Dateien hochladenWie auch DTML-Dokumente und -Methoden erlauben Dateien Ihnen, eine Datei von Ihrem Computer hochzuladen, wenn Sie ein neues Objekt erstellen. Klicken Sie auf die Schaltfläche Browse, um eine Datei von Ihrem lokalen Computer beim Erstellen eines neuen Zope-Files zu wählen. Versuchen Sie, eine Datei, etwa eine Word-Datei (.doc) oder eine Date im "Portable Document Format" (.pdf) zu wählen. Beachten Sie, dass, wenn Sie eine Datei mit Ihrem Browser hochladen, Sie eventuell den Dateityp nach dem Sie suchen im Hochlade-Dialog Ihres Browsers angeben müssen. Nach Sie eine Datei ausgewählt haben, die hochgeladen werden soll, klicken Sie Add. Je nach der Größe der Datei, die Sie hochladen wollen, kann es einige Minuten dauern, bis Zope die Datei hinzufügt. Nach dem Hinzufügen der Datei klicken Sie auf die neue Datei und betrachten Sie seine Edit-Ansicht. Hier sehen Sie, dass Zope den Inhaltstyp erraten hat, wie in Abbildung 3-5 gezeigt. Abbildung 3-5 Die Eigenschaft "Content Type" Wenn Sie ein Word-Dokument hinzufügen, ist der Inhaltstyp application/msword. Wenn Sie eine PDF-Datei hinzufügen, ist der Inhaltstyp application/pdf. Wenn Zope den Dateityp nicht erkennt, wählt es den Standardwert, die allgemeine Inhaltsart application/octet-stream. Sie können den Inhalt eines vorhandenen Files über das Öffnen der Ansicht Upload ändern. Hier können Sie den Inhalt der Datei durch eine neue Datei ersetzen. Wenn Sie die Felder Id und Title in diesem Formular nicht ausfüllen und Sie eine Datei hochladen, wird Zope den Dateinamen als Kennung und Titel des Objekts verwenden. Dateien bearbeitenFalls Ihre Datei Text enthält und kleiner als 64kB ist, können Sie sie mit dem Management-Interface bearbeiten. Text-Dateien sind Dateien deren Inhaltstyp mit text/ beginnt, wie text/html oder text/plain. Manchmal ist es bequemer Textdateien über das Management-Interface zu verändern. Nichtsdestotrotz können Sie Dateien auch lokal bearbeiten und Sie dann in Zope hochladen. Dateien betrachtenSie können eine Datei durch Öffnen des Reiters View im Management-Interface betrachten. Sie können eine Datei auch durch aufrufen seines URLs ansehen. In Wirklichkeit ist der Reiter View nur eine Methode vom Zope-Management-Interface aus zum URL einer Datei zu kommen. Wenn Sie zum Beispiel eine Datei namens mitarbeiterVertrag.pdf in Ihrem Zope-Stammordner haben, dann können Sie diese Datei in Ihrem Web-Browser durch aufrufen des URL http://localhost:8080/mitarbeiterVertrag.pdf betrachten. Je nach Art der Datei kann Ihr Web-Browser die Datei anzeigen oder sie herunterladen. Zope-Bilder verwendenBilder (Images) stellen Grafiken wie GIF-, JPEG- und PNG-Dateien dar. In Zope sind Bilder ähnlich wie Datei-Objekte, beinhalten aber zusätzliche Funktionen für das Verwalten grafischen Inhalts. Bildobjekte haben dasselbe Management-Interface wie Dateiobjekte. Alles aus dem vorherigen Abschnitt, wie man File-Objekte verwendet gilt auch für Images. Bildobjekte zeigen Ihnen jedoch eine Vorschau des Bildes wenn Sie sie hochladen. Viewing Images with HTMLDie häufigste Verwendung für Bilder in Zope ist das einbinden von Bildern in Web-Seiten. Um ein Bild auf eine Web-Seite zu bringen, müssen Sie das HTML-IMG-TAG verwenden. Angenommen, Sie haben ein Bild namens logo in Ihrem Stammordner, das eine Abbildung Ihres Firmenlogos enthält. Dieses Bild in HTML-Code zu verwenden, ist ein einfacher Vorgang: Sie können auf es mit einem IMG-Tag verweisen, wie Sie es auch tun würden, um jede Art von Bildern in eine Web-Seite einzubinden:
In diesem Beispiel verweisen Sie auf das Bild logo durch Erstellen eines HTML-IMG-TAGs. Es ist aber normalerweise nicht notwendig, Ihre eigenen IMG-Tags zu erstellen, um Bilder anzuzeigen. Bildobjekte wissen, wie sie ihre eigenen HTML-Tags generieren müssen. Wenn Sie ein Bildobjekt in DTML einfügen, generiert es ein IMG-Tag für sich selbst. Jetzt wollen wir, dass dieses Logo auf jeder Seite in der linken oberen Ecke erscheint, also erstellen wir einen Verweis darauf in der Methode standard_html_header: Betrachten Sie jetzt den Stammordner indem Sie auf dessen View-Reiter klicken. Wenn Sie den Quelltext der Web-Seite ansehen, die Zope erstellt, können Sie erkennen, dass der Den DTML-Befehl var zu verwenden, um Bilder darszustellen, macht die Dinge einfacher, da Zope die Werte der height- und width-Attribute des IMG-Tags für Sie automatisch herausfindet. Wenn es Ihnen nicht gefällt, wie Zope ein IMG-Tag erzeugt, kann es angepasst werden. Konsultieren Sie Anhang B für weitere Informationen über das Image-Objekt und wie es das IMG-Tag steuern kann. Es gibt eine Reihe von Zope-Objekttypen von Drittherstellern (allgemein "Produkte" genannt) zum Speichern und Betrachten von Bildinhalt im Abschnitt "visual" von Zope.org. Bilder über das Netz betrachtenBilder können direkt durch das Besuchen ihres URL in Ihrem Web-Browser betrachtet werden. Lassen Sie uns beispielsweise annehmen, dass Sie Ihr Firmenlogo direkt sehen wollen. Das Logo existiert als bildobjekt in Ihrem Stammordner. Es heißt logo. Sie können es leicht betrachten, indem Sie direkt zu seinem URL http://localhost:8080/logo gehen. Da Zope-Bilder genauso wie auf einem normalen Web-Server gespeicherte Bilder funktionieren, können Sie auf Ihre Zope-Bilder von anderen Web-Servern zugreifen. Einmal angenommen Sie haben ein Zope-Bild dessen URL http://imageserver:8080/Voegel/Sittich.jpg lautet, so können Sie dieses Bild in jede Web-Seite auf jedem Web-Server mit Hilfe des absoluten URLs des Bildes einbinden:
Dieses Beispiel zeigt, wie Sie Zope-Daten außerhalb von Zope verwenden können, indem Sie Standard-Internet-Protokolle verwenden. Später, in Kapitel 10 "Zope-Scripting für Fortgeschrittene", sehen wir, wie Sie die meisten Zope-Objekte Dienste der Außenwelt anbieten können. Objekteigenschaften verwendenEigenschaften (Properties) sind eine Möglichkeit Informationen mit Objekten in Zope zu verknüpfen. Viele Zope-Objekte, einschließlich Ordner und Dokumente, unterstützen Eigenschaften. Eigenschaften können ein Objekt kennzeichnen, um seinen Inhalt zu identifizieren, (viele Zope-Inhalts-Objekte haben eine Inhaltstyp-Eigenschaft namens Content-Type). Eine andere Verwendung von Eigenschaften ist das Bereitstellen von Metadaten für ein Objekt wie seinen Autor, seinen Titel, seinen Status, usw. Eigenschaften können komplexer als Zeichenfolgen sein. Sie können auch Nummern, Listen oder andere Datenstrukturen sein. Alle Eigenschaften werden über die Ansicht Properties verwaltet. Klicken auf den Reiter Properties eines Ordners und Sie kommen zur Ansicht für die Eigenschaftenverwaltung (wie in Abbildung 3-6 gezeigt). Abbildung 3-6: Die Ansicht zum Verwalten von Eigenschaften Eine Eigenschaft besteht aus einem Namen, einem Wert und einem Typ. Der Typ einer Eigenschaft definiert, welche Werte sie haben kann. In Abbildung 3-6 können Sie sehen, dass der Ordner drei Eigenschaften hat: title, Author und KeyWords. Die Eigenschaften title und Author string-Eigenschaften sind (Zeichenfolgen), während die Eigenschaft KeyWords vom Typ tokens ist. Eine tokens-Eigenschaft entspricht einer Folge von Wörtern. Zope unterstützt eine Vielzahl von Eigenschaftstypen. Jeder Typ ist für eine bestimmte Aufgabe geeignet. Diese Liste gibt einen kurzen Überblick über die Arten von Eigenschaften, die Sie im Management-Interface erstellen können:
Eigenschaften sind sehr nützliche Hilfsmittel für das Kennzeichnen Ihrer Zope-Objekte mit kleinen Einheiten von Daten oder Information. In Verbindung mit Methoden und Skripten machen Eigenschaften das Erweitern einfacher Objekte, wie Ordner, zu einer sehr leistungsfähigen Methode. Logik mit Skripten programmierenIn traditioneller Programmierersprache ist ein Skript ein in einer Programmiersprache geschriebenes kurzes Stück Quelltext. Seit Version 2.3 bietet Zope zwei Arten von Skriptobjekten: eine, mit der Sie Skripte in Python schreiben können, und eine, mit der Sie Skripte in Perl schreiben können. Sowohl Python als auch Perl sind sehr beliebte und leistungsfähige Programmiersprachen. Sowohl Python als auch Perl haben gemeinsame, ähnliche Merkmale: Sie bieten beide eine leistungsfähige, rasche Entwicklung, eine einfache Syntax, viele Add-On-Bibliotheken, eine starke Unterstützung durch ihre Benutzergemeinde und ein reichhaltiges Angebot an kostenloser Online-Dokumentation. Beide Sprachen sind auch Open-Source. Weil Skripte so leistungsfähig und flexibel sind, sind ihre Anwendungsmöglichkeiten endlos. Skripte werden in erster Linie verwendet, um so genannte Geschäftslogik zu schreiben. Geschäftslogik ist etwas anderes als Darstellungslogik. Darstellungslogik wird normalerweise in einer Präsentationssprache wie DTML geschrieben, und ihr Zweck ist es Informationen einem Benutzer zu präsentieren. Geschäftslogik wird normalerweise in eine Scripting-Sprache geschrieben, und ihr Zweck ist es Informationen zu verändern, die aus Inhaltsquellen (wie Dokumenten oder Datenbanken) stammt, oder andere Objekte zu manipulieren. Darstellungslogik baut oft auf der Geschäftslogik auf. Ein einfaches Beispiel für die Verwendung von Skripten ist die Erstellung eines Online-Webformulars, um Ihren Benutzern zu helfen, den Zinseszinsbetrag ihrer Schulden zu berechnen. Diese Art von Berechnung schließt folgende Prozedur ein:
Für dieses Beispiel brauchen Sie zwei Seitenvorlagen, zinsFormular und zinsDarstellung genannt, um die Informationen vom Benutzer abzufragen beziehungsweise sie darzustellen. Sie brauchen auch ein berechneZineseszins genanntes Python-basiertes Skript, das die tatsächliche Berechnung durchführt. Der erste Schritt ist, ein Web-Formular in zinsFormular zu erstellen, das "kapital", "zinssatz", "perioden" und "jahre" Ihrer Benutzer abfragt. Hier ist eine beispielhafte Seitenvorlage zinsFormular: Dieses Formular sammelt Informationen und ruft die Methode zinsDarstellung auf. Erstellen Sie jetzt ein berechneZineseszins genanntes Python-basiertes Skript, das die vier Parameter "kapital", "zinssatz", "perioden" und "jahre" aufnimmt, mit folgendem Python-Code: ## Script (Python) "berechneZineseszins" ## Parameter = kapital, zinssatz, perioden, jahre ## """ Zinseszinsrechnung """ i = zinssatz / perioden n = perioden * jahre return ((1 + i) ** n) * kapital Geben Sie die Parameter in das Feld Parameters List und den Code in das Haupttextfeld ein. Die Kommentare die am Anfang des Codes stehen sind beim Bearbeiten über das Web nicht nötig. (Sie sind jedoch hilfsreich beim Bearbeiten von Skripten über FTP.) Dies gibt den Saldo oder die Schulden zurück, der über Zeitraum "jahre" verzinst wurde. Erstellen Sie danach eine Seitenvorlage namens zinsDarstellung, die berechneZineseszins aufruft und das Ergebnis zurückgibt:
Rufen Sie zuerst die Seitenvorlage zinsFormular ab. Geben Sie jetzt einige Information über Ihren Saldo oder Ihre Schulden ein und klicken Sie auf Berechnen. Dies bewirkt, dass zinsFormular die gesammelten Informationen an zinsDarstellung schickt, das wiederum das Python-basierte Skript berechneZineseszins aufruft. Die Darstellungs-Methode verwendet den vom Skript zurückgegebenen Wert bei der entstehenden Darstellung. Wie bereits früher erwähnt, sind die Möglichkeiten, Skripte zu verwenden, fast endlos. Dieses Beispiel gibt Ihnen jedoch einen guten Eindruck vom allgemeinsten Anwendungsmuster für Darstellungs-Objekte Informationen abzufragen und anzuzeigen und das Verwenden von Geschäftslogik-Objekten um Berechnungen durchzuführen. Methoden verwendenMethoden sind Objekte in Zope, die speziellen ausführbaren Inhalt enthalten. Das Wort "Methode" ist eigentlich die falschen Bezeichnung und seine Verwendung in Zope nimmt langsam ab zugunsten gebräuchlicherer Ausdrücke wie Skript und Vorlage. Zope bietet zwei Arten von Methoden: DTML-Methoden und SQL-Methoden. DTML-Methoden werden verwendet, um Darstellungsvorlagen zu definieren, die auf Inhaltsobjekte wie DTML-Dokumente und Dateien angewendet werden können. Eine sehr häufige und beliebte Art, DTML-Methoden zu verwenden, ist das Definieren von Darstellungsvorlagen separat von Ihrem Inhalt. SQL-Methoden werden verwendet, um Datenbankabfragen zu speichern, die Sie überall in Ihrer Webanwendung wieder verwenden können. SQL-Methoden werden in Kapitel 12 "Verbindung mit relationalen Datenbanken" erklärt, wo ein Beispiel für das Erstellen einer Webanwendung mit Hilfe einer relationalen Datenbank, gegeben wird. Alle die verschiedenen Objekte in Zope können durch das Anwenden von Methoden auf diese Objekte verändert werden. Beispielsweise besitzen Ordner-Objekte eine Vor Zope 2.3 waren DTML-Methoden die einzige Art, Skripte mit Ihrem Web-Browser in Zope zu schreiben. Während DTML für sehr einfache Skripte und die Darstellung von Information mittels Vorlagen brauchbar ist, hatte dieser Ansatz viele Probleme, weil DTML nicht so flexibel wie andere Programmiersprachen ist. Zope 2.3 führte zwei neue Arten von Skript-Objekten basierend auf zwei sehr beliebten Programmiersprachen, Python (in dem Zope geschrieben ist) und Perl ein. Sie sollten Python und Perl-basierte Skripte für komplexere Skripte verwenden, statt eine DTML-Methode zu schreiben. Während Sie durch die ältere Zope-Dokumentationen, Mailinglisten-Archive und andere Ressourcen auf Zope.org blättern, können Sie viele Verweise auf sehr komplexe DTML-Skripte finden, die vor den Python und Perl-basierten Skripte verwendet wurden. Im Allgemeinen sollten komplexe Skripte entweder in Python oder Perl geschrieben werden. Python und Perl-basierte Skripte werden später in diesem Kapitel beschrieben und in Kapitel 10 "Zope-Scripting für Fortgeschrittene" werden viele Beispiele für ihren Einsatz gegeben. Ein einfaches Beispiel dafür, wie man DTML-Methoden verwendet, ist das Erstellen einer DTML-Methode Namens objektListe im Stammordner: Wenn Sie diese Methode betrachten, ruft sie die objectValues-Methode im Stammordner auf und zeigt Ihnen eine einfache HTML-Liste aller der Objekte im Stammordner an, wie in Abbildung 3-7 gezeigt wird. Abbildung 3-7 Ergebnisse der DTML-Methode objektListe Alle Ordner implementieren die objectValues-Methode. Die objectValues-Methode ist Teil einer Schnittstelle namens ObjectManager, die alle Ordner implementieren. Zusätzlich zur Anwendung von API-Methoden auf Objekte können DTML-Methoden auch auf eine bestimmten Art dazu verwendet werden, jedes Zope-Objekt zu erweitern. Dies wird im nächsten Kapitel detaillierter erklärt. Effektiv erlaubt Ihnen dies, das Zope-API zu erweitern, indem Sie einfach DTML-Methoden erzeugen. Sie sahen gerade die objektListe-Methode, die sich im Stammordner befindet und eine einfache Liste des Stammordnerinhalts ausgibt. Weil die Methode im Stammordner ist, ist sie jetzt durch andere Objekte in oder unterhalb des Stammordners verwendbar. Diese Methode erweitert das Zope-API für diese Objekte, da es ihnen eine andere aufrufbare Methode liefert. Um dies zu demonstrieren, lassen Sie uns einen Primaten genannten Unterordner erstellen und fügen Sie drei Dokumente, Affen, Menschenaffen, Menschen hinzu. Sie können die objektListe-Methode des Primaten-Ordners durch das Besuchen des URLs Primaten/objektListe aufrufen. Wie Sie sehen könne, unterscheidet sich die Auswirkung des Aufrufs der objektListe-Methode des Primaten-Ordners von der Auswirkung, es im Stammordner aufzurufen. Die objektListe-Methode ist im Stammordner definiert, aber wir verwenden sie hier, um den Inhalt des Primaten-Ordners anzuzeigen. Dieser Mechanismus, Objekte wieder zu verwenden, heißt Akquisition und wird in Kapitel 4 "Dynamische Inhalte mit DTML" näher erklärt. DTML-Methoden dienen hauptsächlich als Darstellungsvorlagen. DTML-Methoden können als Vorlagen dienen, die wiederverwendbare Inhaltselemente zu dynamischen Web-Seiten zusammenfügen. Die Vorlagenfunktionalität von DTML-Methoden wird im nächsten Kapitel im Detail erörtert. Vergleich zwischen DTML-Dokumenten und -MethodenDTML-Methoden haben dieselbe Benutzerschnittstelle wie DTML-Dokumente, was Anfänger ein bisschen verwirren kann. Alle Vorgehensweisen, die Sie im letzten Kapitel für das Hinzufügen, das Bearbeiten, das Betrachten und das Hochladen von DTML-Dokumenten lernten, sind für DTML-Methoden identisch. Eine Quelle für häufige Missverständnisse für Zope-Anfänger ist die Frage, wann man ein DTML-Dokument und wann eine DTML-Methode verwenden soll. Oberflächlich betrachtet scheinen diese zwei Möglichkeiten identisch. Beide enthalten DTML und anderen Inhalt, beide führen DTML-Code aus, und beide haben eine ähnliche Benutzerschnittstelle und ein ähnliches API. Was ist also der Unterschied? DTML-Dokumente sind dazu gedacht, Dokument-ähnliche Inhalt zu speichern. Zum Beispiel könnten die verschiedenen Kapitel eines Buchs in einem DTML-Dokument gespeichert werden. Eine allgemeine Regel ist: wenn Ihr Inhalt hauptsächlich Dokument-orientiert sind und Sie ihn auf Ihrer Site darstellen wollen, dann sollte er in ein DTML-Dokument kommen. DTML-Methoden sind dazu gedacht, andere Objekte zu verändern und darzustellen. DTML-Methoden speichern normalerweise nicht viel Inhalt, es sei denn, der Inhalt soll sich ändern oder anderen Inhalt manipulieren. Machen Sie sich keine Sorgen, wenn Sie Ihnen die Unterschiede zwischen DTML-Dokument und -Methode immer noch unklar sind. Sogar die erfahrensten Zope-Programmierer müssen etwas überlegen, bevor sie entscheiden, welche Art von Objekt sie verwenden. In Kapitel 8 "Variablen und DTML für Fortgeschrittene" werden Sie etwas über die technischen Unterschiede zwischen DTML-Dokumenten und DTML-Methoden lernen (Sie suchen Variablen auf unterschiedliche Weise, weil Sie unterschiedliche "Client"-Objekte besitzen). Hier sind einige allgemeine Regeln, um Ihnen zu helfen, sich zwischen DTML-Dokumenten und -Methoden zu entscheiden:
Wie Sie gesehen haben, sind DTML-Methoden ein hilfreiches Werkzeug für Darstellung und einfache Programmierung, aber vielleicht werden Sie die Leistungsfähigkeit einer Programmiersprache mit vollem Funktionsumfang wollen und hier kommen schließlich die Skripte ins Spiel. Sitzungen verwendenSitzungen (Sessions) erlauben es, die Übersicht über Site-Beuscher zu behalten. Web-Browser benutzen ein Protokoll namens HTTP um Daten mit einem Server wie Zope auszutauschen. HTTP bietet einem Server keine Möglichkeit die Übersicht über die Anfragen eines Benutzers zu behalten. Jede Anfrage wird völlig unabhängig von anderen betrachtet. Sitzungen überwinden diese Einschränkung von HTTP. Der Begriff "Sitzung" bezeichnet eine Reihe von zusammengehörenden HTTP-Anfragen, die von demselben Client während eines bestimmten Zeitraums kommen. Zopes Sitzungssystem benützt Cookies und/oder HTTP-Formular-Elemente "im Hintergrund", um die Sitzungen eines Benutzer zu verfolgen. Mit Zopes Sitzungssystem können Sie das manuelle Verwalten von Benutzersitzungen vermeiden. Sie können Sitzungen dazu verwenden, anonyme Benutzer zu verfolgen, wie auch diejenigen die Konten zur Zope-Anmeldung besitzen. Daten die mit einer Sitzung verknüpt sind nennt man "Sitzungsdaten" (Session Data). Sitzungsdaten sind nur für die Dauer eines Site-Besuchs gültig, die über eine einstellbare Zeitschwelle festgelegt wird, in der ein Benutzer nicht aktiv ist. Sitzungsdaten werden dazu verwendet Informationen über den Besuch eines Benutzers zu speichern, wie die Artikel die ein Benutzer in einen "Einkaufskorb" legt oder welche Seiten ein Benutzer während seines Besuchs auf Ihrer Site aufgerufen hat. Es ist wichtig, dass man sich bewusst darüber wird, dass das Speichern von sensiblen Informationen in Sitzungsdaten potenziell unsicher ist, wenn die Verbindung zwischen Browsern und Zope nicht in irgend einer Weise verschlüsselt ist. Speichern Sie keine sensiblen Daten wie Telefonnummern, Adressen, Kontonummern, Kreditkartennummern oder andere persönliche Informationen über Ihre Site-Besucher, solange Sie die Verbindung zwischen Zope und den Site-Besuchern nicht mit SSL abgesichert haben. Sitzungs-KonfigurationZope-Versionen nach 2.5 bieten standardmäßig eine vorgefertigte Sitzungsumgebung, das bereits startfähig konfiguriert ist. Es besteht also kein Anlass diese Objekte zu ändern, solange Sie nicht neugierig sind oder die Sitzungseinstellungen verändern möchten. Benutzen Sie das Hilfesystem um Informationen darüber zu erhalten, wie Sie die Einstellungen ändern können. Zope verwendet mehrere verschiedene Arten von Objeken um Sitzungsdaten zu verwalten. Hier folgen kurze Beschreibungen für ihre Verwendungszwecke.
Sitzungsdaten verwendenSie werden auf Sitzungsdaten typischerweise über das Attribut Hier ist ein Beispiel, wie man durch Verwendung eines python-basierten Skripts mit einer Sitzung arbeitet: ## Script (Python) "letzterAufruf" sek_pro_tag=24*60*60 sitzung=context.REQUEST.SESSION if sitzung.has_key('letzter Aufruf'): # Das Skript wurde bereits aufgerufen, da 'letzter Aufruf' # vorher schon einmal in der Sitzung gesetzt wurde. vorher=sitzung['letzter Aufruf'] jetzt=context.ZopeTime() sitzung['letzter Aufruf']=jetzt # letzten Aufruf auf jetztige Zeit setzen return 'Sekunden seit letztem Aufruf %.2f' % ((jetzt - vorher) * sek_pro_tag) # Das Skript wurde vorher noch nie Aufgerufen, weil 'letzter Aufruf # in den Sitzungsdaten nicht existiert. sitzung['letzter Aufruf']=context.ZopeTime() return 'Dies ist Ihr erster Aufruf' Rufen Sie dieses Skript ab und laden Sie es mehrmals neu. Es weiß darüber Bescheid, wann Sie das Skript zuletzt abgerufen haben und berechnet die Zeit zwischen den Aufrufen. Wenn Sie Ihren Browser beenden und das Skript wieder aufrufen, hat es Sie vergessen. Wenn Sie jedoch einfach ein paar andere Seiten besuchen und wieder zurückkehren, weiß es den Zeitpunkt Ihres letzten Aufrufs immer noch. Dieses Beispiel zeigt die grundlegenden Funktionen für das Arbeiten mit Sitzungsdaten: Sitzungsdaten-Objekte verhalten sich genau wie Python-Dictionaries. Sie werden fast immer Sitzungsdaten verwenden, die aus normalen Python-Listen, Dictionaries, Zeichenketten und Zahlen bestehen. Das einzig knifflige an Sitzungen ist, dass wenn Sie mit veränderbaren Sitzungsdaten (wie zum Beispiel Dictionaries oder Listen) arbeiten, Sie die Sitzungsdaten durch erneutes Zuweisen speichern müssen. Hier ist ein Beispiel: ## Script (Python) "sitzungsBeispiel" sitzung=context.REQUEST.SESSION # l ist eine Liste l=sitzung['meineListe'] l.append('Spam') # Wenn Sie hier auhören, werden Ihre Änderungen an der Liste # nicht gespeichert. Sie müssen die Sitzungsdaten speichern indem # Sie sie der Sitzung erneut zuweisen. sitzung['meineListe']=l Weitere Informationen über Persistenz und veränderbare Daten finden Sie im Zope Developer's Guide. Sie können Sitzung auch in Seitenvorlagen und DTML-Dokumenten verwenden. Hier beipielsweise ein Code-Stück aus einer Vorlage, das die Lieblingsfarbe des Benutzers darstellt (wie sie in der Sitzung gespeichert ist):
Hier das gleiche, nur in DTML: Sitzungen haben eine Fülle von zusätzlichen Konfigurationsparametern und Anwendungsfällen. Für weitere Informationen über die Anwendungsprogrammierschnittstelle von Sitzungen, sehen Sie im Zope-Hilfesystem nach. Für ein weiteres Beispiel für die Verwendung von Sitzungen, sehen Sie sich das "Shopping Cart"-Beispiel an, das zusammen mit Zope 2.5 und höheren Version geliefert wird (im Examples-Ordner). Versionen verwendenVersionsobjekte helfen, die Arbeit mehrerer Leute an denselben Objekten zu koordinieren. Während Sie ein Dokument bearbeiten, kann jemand anderes zur selben Zeit ein anderes Dokument bearbeiten. In einer großen Zope-Site können Hunderte oder sogar Tausende von Menschen Zope gleichzeitig verwenden. Den Großteil der Zeit funktioniert dies gut, aber es können Probleme auftreten. Zum Beispiel könnten zwei Leute zu derselben Zeit dasselbe Dokument bearbeiten. Wenn die erste Person ihre Änderungen abschließt, werden sie in Zope gesichert. Wenn die zweite Person ihr Änderungen abschließt überschreibt sie die Änderungen der ersten Person. Sie können dieses Problem immer durch und Verwenden der Undo- und History-Funktionen umgehen, aber es kann immer noch ein Problem sein. Um dieses Problem zu beheben, hat Zope Version-Objekte. Ein anderes Problem auf das Sie stoßen können, ist, dass Sie zwar einige Änderungen vornehmen möchten, aber Sie möchten sie nicht öffentlich machen bis Sie fertig sind. Nehmen wir beispielsweise an, dass Sie die Menüstruktur Ihrer Site ändern wollen. Sie wollen nicht an diesen Änderungen arbeiten, während Leute Ihre Site verwenden, weil es das Navigationssystem zeitweilig zerstören kann, während Sie daran arbeiten. Versionen sind eine Möglichkeit, nicht-öffentliche Änderungen in Zope vorzunehmen. Sie können Änderungen an vielen verschiedenen Dokumenten vornehmen, ohne dass andere Leute sie sehen. Wenn Sie entscheiden, dass Sie fertig sind, können Sie Ihre Änderungen öffentlich machen oder sie verwerfen. Sie können in einer Version arbeiten solange Sie wollen. Zum Beispiel kann es Sie eine Woche kosten, Ihrem neues Menüsystem den letzten Schliff zu geben. Sobald Sie fertig sind, können Sie all Ihre Änderungen auf einmal zu veröffentlichen, indem Sie die Version freigeben. Erstellen Sie eine Version durch das Wählen von "Version" in der Produktauswahlliste. Sie sollten zu einem Erstellformular kommen. Geben Sie Ihrer Version die Id MeineAenderungen und klicken Sie auf die Schaltfläche Add. Jetzt haben Sie eine Version erstellt, verwenden sie jedoch noch nicht. Um Ihren Version zu verwenden klicken Sie auf sie. Sie sollten zur Ansicht Join/Leave Ihrer Version kommen, wie in Abbildung 3-8 gezeigt. Abbildung 3-8 Anmelden an einer Version Die Version teilt Ihnen mit, dass Sie sie gegenwärtig nicht verwenden. Klicken Sie auf die Schaltfläche Start Working in MeineAenderungen. Jetzt sollte Zope Ihnen sagen, dass Sie in einer Version arbeiten. Kehren Sie jetzt zum Stammordner zurück. Achten Sie darauf, dass Sie überall wohin Sie gehen eine kleine Nachricht am oberen Fensterrand erscheint, die sagt You are currently working in version /MeineAenderungen. Diese Nachricht lässt Sie wissen, dass Änderungen, die Sie an dieser Stelle vornehmen, nicht öffentlich sein werden, aber in Ihrer Version gespeichert werden. Erstellen Sie zum Beispiel ein DTML-Dokument namens neu. Wie Sie merken, hat es eine kleine rote Raute nach seiner Kennung. Bearbeiten Sie jetzt Ihre standard_html_header-Methode. Fügen Sie ihr eine Zeile hinzu wie etwa:
Jedes Objekt, das Sie erstellen oder bearbeiten, während Sie in einer Version arbeiten, wird mit einer roten Raute markiert werden Kehren Sie jetzt zu Ihrer Version zurück und klicken Sie auf die Schaltfläche Quit working in MeineAenderungen. Versuchen Sie jetzt zum Dokument neu zurückzukehren. Achten Sie darauf, dass das Dokument, das Sie während Sie in Ihrer Version waren erstellt haben, jetzt verschwunden ist. Andere Änderungen, die Sie in der Version vorgenommen haben, sind auch verschwunden. Wie Sie merken, hat Ihre standard_html_header-Methode jetzt eine kleine rote Raute und ein nachfolgendes Sperrsymbol. Dies zeigt, dass dieses Objekt in einer Version geändert worden ist. Wird Objekt in einer Version zu ändern, wird es gesperrt es, sodass es niemand anderes mehr ändern kann, bis Sie die Änderungen die Sie in Ihrer Version vorgenommen haben bestätigen oder verwerfen. Die Sperrung stellt sicher, dass Ihre Versionsänderungen keine Änderungen überschreiben, die andere Leute vornehmen, während Sie in einer Version arbeiten. Wenn Sie sich zum Beispiel vergewissern wollen, dass nur Sie zu einer bestimmten Zeit an einem Objekt arbeiten, so können Sie es in einer Version ändern. Die Sperrung schützt Sie sich nicht nur vor unerwarteten Änderungen, sie macht auch die Sache auch unbequem, wenn Sie etwas bearbeiten wollen, das gerade von jemand anderem gesperrt ist. Es ist sinnvoll, die Verwendung von Versionen einzuschränken, um das Auszusperren anderer Leute beim Vornehmen von Änderungen an Objekten zu vermeiden. Kehren Sie jetzt zu Ihrer Version dadurch zurück, indem Sie den auf sie und dann auf die Schaltfläche Start working in MeineAenderungen klicken. Achten Sie darauf, dass alles in den Zustand zurückkehrt, wie es war, bevor Sie die Version verließen. Lassen Sie uns an dieser Stelle Ihre Änderungen dauerhaft machen. Gehen Sie zur Ansicht Save/Discard, wie in Abbildung 3-9 gezeigt. Abbildung 3-9 Versionsänderungen freigeben. Geben Sie einen Kommentar wie Dies ist ein Test in das Eingabefeld Comment ein und klicken Sie auf die Schaltfläche Save. Ihre Änderungen sind jetzt öffentlich und alle Objekte, die Sie in Ihrer Version geändert haben, sind jetzt nicht mehr gesperrt. Achten Sie darauf, dass Sie immer noch in Ihrer Version arbeiten. Gehen Sie zur Ansicht Join/Leave und klicken Sie auf die Schaltfläche Quit Working in MeineAenderungen. Stellen Sie jetzt sicher, dass das Dokument, das Sie in Ihrer Version erstellt haben, sichtbar ist. Ihre Änderung am standard_html_header sollte auch sichtbar sein. Wie überall in Zope, können Sie diese Änderungen rückgängig machen, wenn Sie wollen. Gehen Sie zur Ansicht Undo. Wie Sie bemerken, haben Sie statt vieler Transaktionen - einer für jede Änderung - nur eine Transaktion für alle, die Änderungen haben, die Sie in Ihrer Version vorgenommen haben. Wenn Sie die Transaktion widerrufen, werden alle in der Version vorgenommenen Änderungen rückgängig gemacht. Versionen sind ein leistungsfähiges Werkzeug für die Zusammenarbeit in Teams. Sie müssen keine Live- und Test-Server laufen lassen, da Versionen es Ihnen erlauben Experimente durchzuführen, sie zu beurteilen und sie dann zu öffentlich machen, wenn Sie entscheiden, dass alles in Ordnung ist. Sie sind nicht darauf beschränkt nur in einer Version zu arbeiten. Viele Leute können in derselben Version arbeiten. Auf diese Weise können Sie über Version zusammenarbeiten, während sie die Änderungen vor der allgemeinen Öffentlichkeit verborgen halten. Versionen und ZCatalogVersionen arbeiten nicht gut mit ZCatalog zusammen. Der Grund dafür ist, dass Versionen Objekte sperren sobald diese in einer Version bearbeitet werden, um Änderungen außerhalb einer Version zu verhindern. Dies funktioniert gut wenn Änderungen isoliert sind. ZCatalog verknüpft auf bestimmte Weise die Veränderungen von ungleichen Objekten. Dies passiert, weil das katalogisieren eines Objekts notwendigerweise den Catalog ändern muss. Objekte die sich selbst katalogisieren wenn sie verändert werden geben ihre Änderungen an den Catalog weiter. Wenn solch ein Objekt in einer Version geändert wird, wird auch der Catalog in der Version geändert, wodurch der Catalog gesperrt wird. Durch diese Eigenschaft lassen sich Catalog und Versionen schlecht miteinander verwenden. In der Regel sollten Versionen nicht in Anwendungen eingesetzt werden die einen Catalog verwenden. Pufferung zur LeistungssteigerungEin Cache ist ein temporärer Ort, um Informationen zu speichern, auf die häufig zugriffen wird. Der Grund für das Verwenden eines Caches ist die Geschwindigkeit. Jede Art von dynamischem Inhalt wie eine DTML-Seite oder ein Python-Skript muss jedes Mal ausgewertet werden, wenn es aufgerufen wird. Für einfache Seiten oder schnelle Skripte ist dies normalerweise kein Problem. Bei sehr komplexen DTML-Seiten oder Skripten, die viele Berechnungen ausführen oder entfernte Server aufrufen kann der Zugriff auf diese Seite oder dieses Skript mehr als nur ein triviales Maß an Zeit beanspruchen. Sowohl DTML als auch Python können so komplex werden, besonders wenn Sie viele Schleifen verwenden (wie das Durch Speichern des Ergebnisses nach einem einzelnen Aufruf einer rechenintensiven Seite oder eines rechenintensiven Skripts kann ein Cache durch eine spätere Wiederverwendung dieses Aufrufs die Geschwindigkeit Ihrer Site stark erhöhen. Die aller erste Person die diese Seite aufruft erhält die übliche lange Antwortzeit, aber sobald der Wert der Berechnung im Cache gespeichert ist, werden alle folgenden Benutzer die die Seite betrachten werden eine sehr kurze Antwortzeit bemerken weil sie die gepufferte Kopie des Ergebnisses bekommen und nicht wieder die selbe rechenintensive Verarbeitung durchlaufen, die der erste Benutzer durchlief. Um Ihnen eine Vorstellung davon zu geben, wie Caches Ihre Site-Geschwindigkeit verbessern können, stellen Sie sich vor Sie erstellen www.zopezoo.org und die aller erste Seite Ihrer Site ist sehr komplex. Lassen Sie uns annehmen, dass diese Seite komplexe Kopf- und Fußzeilen hat, mehrere verschiedene Datenbanktabellen abfrägt und mehrere spezielle Skripte auf komplexe Weise aufruft, die die Ergebnisse der Datenbankabfragen auf komplexe Weise verarbeiten. Jedes Mal, wenn ein Benutzer zu www.zopezoo.org kommt, muss Zope diese sehr aufwendige Seite wiedergeben. Lassen Sie uns für Demonstrationszwecke annehmen, dass diese Berechnung dieser komplexen Seite eine halbe Sekunde oder 500 Millisekunden in Anspruch nimmt. Angenommen es dauert eine halbe Sekunde, um diese fiktionale komplexe Hauptseite wiederzugeben, dann kann Ihr Rechner nur 120 Anfragen pro Minute bearbeiten. In Wirklichkeit wäre diese Zahl wahrscheinlich noch niedriger, weil Zope zusätzlich noch andere Dinge zu tun hat als diese Hauptseite bereitzustellen. Stellen Sie sich jetzt vor, dass Sie diese so einrichten, dass sie gepuffert wird. Da nichts von der rechenintensiven Verarbeitung geleistet werden muss, um die zwischengespeicherte Kopie der Seite anzuzeigen, könnten noch viel mehr Benutzer die Hauptseite betrachten. Wenn es beispielsweise 10 Millisekunden dauert, um eine zwischengespeicherte Seite anzuzeigen, dann wird diese Seite Ihren Webseite-Besuchern 50 mal schneller zur Verfügung gestellt. Die tatsächliche Leistung des Caches und von Zope hängt stark von Ihrem Computer und Ihrer Anwendung ab, aber dieses Beispiel gibt Ihnen eine Vorstellung davon, wie Pufferung Ihre Web-Site ziemlich stark beschleunigen kann. Es gibt jedoch einige Nachteile beim Puffern:
Zope erlaubt Ihnen, diese Probleme durch das Einrichten einer Cache-Richtlinie zu umgehen. Die Cache-Richtlinie erlaubt Ihnen, zu kontrollieren, wie Inhalte zwischengespeichert werden. Cache-Richtlinien werden von Cache-Manager-Objekten verwaltet. Einen Cache-Manager hinzufügenCache-Manager können genau wie jedes andere Zope-Objekt hinzugefügt werden. Gegenwärtig bietet Zope zwei Arten von Cache-Managern:
Erstellen Sie für die Zwecke dieses Beispiels einen RAM Cache Manager Namens CacheManager im Stammordner. Dies wird das Cache-Manager-Objekt für Ihre ganze Site sein. Jetzt können Sie auf CacheManager klicken und seinen Konfigurationsbildschirm betrachten. Es gibt mehrere Elemente auf diesem Bildschirm:
Lassen Sie zunächst alle diese Einträge wie sie sind, es sind gute, vernünftige Standardwerte. Das ist bereits alles, was man tun muss, um einen Cache-Manager einzurichten! Es gibt ein Paar weitere Ansichten in einem Cache-Manager, die Sie vielleicht nützlich finden werden. Das erste ist die Ansicht Statistics. Diese Ansicht zeigt Ihnen die Anzahl von Treffern ("Hits") und Fehlschlägen ("Misses") im Cache an, um Ihnen zu zeigen, wie wirkungsvoll Ihre Pufferung ist. Es gibt auch eine Ansicht namens Associate, die Ihnen erlaubt, einen bestimmten Typ oder Typen von Zope-Objekten mit einem speziellen Cache-Manager zu verknüpfen. Zum Beispiel kann es sein, dass Sie möchten, dass Ihr Cache-Manager nur DTML-Dokumente puffert. Sie können diese Einstellungen in der Ansicht Associate ändern. An dieser Stelle wird noch nichts zwischengespeichert, Sie haben nur einen Cache-Manager erstellt. Der nächste Abschnitt erklärt, wie Sie den Inhalt tatsächlicher Dokumente puffern können. Ein Dokument puffernEin Dokument zu puffern ist sehr leicht. Bevor Sie ein Dokument puffern können müssen Sie zuerst einen Cache-Manager haben, wie den, den Sie im vorherigen Abschnitt erstellt haben. Um ein Dokument zu puffern, erstellen Sie ein neues DTML-Dokument-Objekt im Stammordner namens Wetter. Dieses Objekt enthält eine Wetterinformation. Lassen Sie uns zum Beispiel sagen, es enthält:
Klicken Sie jetzt auf das Wetter-DTML-Dokument und auf seine Cache-Ansicht. Diese Ansicht lässt Sie dieses Dokument mit einem Cache-Manager verknüpfen. Wenn Sie sich im Listenfeld nach unten bewegen, sehen Sie den Cache-Manager CacheManager, den Sie im vorherigen Abschnitt erstellten. Wählen Sie diesen als Cache-Manager für Wetter aus. Jedes Mal wenn jetzt irgend jemand das Wetter-Dokument besucht, bekommt er stattdessen die gepufferte Kopie. Für ein so triviales Dokument wie unser Wetter-Beispiel hat dies nicht viel Nutzen. Aber stellen Sie sich einmal vor, Wetter würde einige Datenbankabfragen enthalten. Zum Beispiel:
Lassen Sie uns annehmen, dass gesternAbrage und aktuelleTempAbfrage SQL-Methoden sind, die eine Datenbank für die gestrige Vorhersage beziehungsweise die aktuelle Temperatur abfragen (für weitere Informationen über SQL-Methoden sehen Sie in Kapitel 12 "Verbindung an relationale Datenbanken" nach). Lassen Sie uns auch annehmen, dass sich die Information in der Datenbank nur einmal jede Stunde ändert. Jetzt würde das Wetter-Dokument ohne zwischenzuspeichern die Datenbank jedes Mal abfragen, wenn es abgerufen würde. Wenn das Wetter-Dokument Hunderte Male in einer Stunde abgerufen werden würde, dann würden all jene Hunderte von Abfragen immer dieselbe Information enthalten. Wenn Sie festlegen, dass das Dokument jedoch gepuffert werden soll, dann führt das Dokument die Abfrage nur durch, wenn der Cache erlischt. Die Standardcachezeit ist 300 Sekunden (5 Minuten), was Ihnen 91 % Ihrer Datenbankabfragen erspart, wenn Sie das Dokument puffern lassen, weil sie nur noch ein Zwölftel so oft abfragen. Es gibt einen Nachteil dieser Methode: Es existiert eine Chance, dass es sein kann, dass die Daten fünf Minuten veraltet sind, aber dies ist normalerweise ein akzeptabler Kompromiss. Für weitere Informationen über das Puffern und das Verwenden der fortgeschritteneren Cache-Optionen sehen sie im Zope Administrator's Guide nach. Virtual-Hosting-ObjekteZope bietet drei Objekte, die Ihnen helfen, virtuelle Hosts einzurichten: SiteRoot, Set Access Rule und Virtual Host Monster. Virtuelles Hosting ist ein Weg viele Web-Sites mit einem Zope Server zu betreuen. Virtuelles Hosting ist eine fortgeschrittene Verwaltungsfunktion, die über den Rahmen dieses Buchs hinausgeht. Sehen im Zope Administrator's Guide für weitere Informationen über das virtuelle Hosting nach. Mit MailHost Mails verschickenZope kommt zusammen mit einem Objekt, das dazu verwendet wird E-Mails abzuschicken, normalerweise in Verbindung mit dem DTML-Tag MailHosts können sowohl von Python als auch von DTML aus dazu benutzt werden, eine E-Mail-Nachicht über das Internet zu verschicken. Sie sind nützlich als Gateways zur Welt. Jedes MailHost-Objekt ist mit einem Mail-Server verknüpft. Beipsielsweise kann man MailHost-Objekt mit Um ein MailHost-Objekt zu erstellen, wählen Sie MailHost aus der Produktauswahlliste. Wie Sie sehen können ist die Standard-Id "MailHost" und der Standard-SMTP-Server und der Port sind "localhost" und "25". Stellen Sie sicher, dass entweder auf Ihrem eigenen Rechner (localhost) ein Mail-Server läuft oder ändern Sie "localhost" in den Namen Ihres SMTP-Servers für ausgehende Nachrichten. Jetzt können Sie das neue MailHost-Objekt von einem DTML- |