Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Heinrich Jörn Kramer Geändert vor über 8 Jahren
1
© Raphael Volz 2001 Slide 1 Zope Grundlagen Seminar – Praktikum Knowledge Portals Raphael Volz
2
© Raphael Volz 2001 Slide 2 Agenda Verwaltung von Zope Objekten Zugriff auf Zope Objekte Grundlegende Zope Techniken –DTML –Python –Zope API
3
© Raphael Volz 2001 Slide 3 Globale Systemarchitektur
4
© Raphael Volz 2001 Slide 4 Objektdatenbank Transparente Persistenz für alle Objekte Transaktionen, Multi-User fähig Versionierung, Undo-Fähigkeiten
5
© Raphael Volz 2001 Slide 5 Klassen Modellieren „Inhalt“ (Content) Haben Eigenschaften Ordner (Folder) Können andere Objekte enthalten. Erzeugen eine Objekt-Hierarchie. DTML Dokumente Dynamische Erzeugung von Dokumenten. Nutzen DTML (Document Template Markup Language) Erzeugung von Inhalt...
6
© Raphael Volz 2001 Slide 6 Methoden Modellieren „Prozesse“ Keine Eigenschaften Bekommen Kontext von aufrufendem Objekt DTML Methoden „Inhalt-erzeugende Prozesse“ Python Skripte Begrenzter Zugriff auf Python-Bibliotheken „Inhalt-verarbeitende Prozesse“ Externe Methoden Python Skripte mit unbeschränktem Zugriff auf Sicherheits- kritische Dinge (Dateisystem...)
7
© Raphael Volz 2001 Slide 7 Eigenschaften Manche Zope-Objekte haben zusätzlich Eigenschaften (Properties) Bsp.: Ordner, Bilder, DTML Dokumente... NICHT: Methoden Mittels Eigenschaften können zusätzliche Informationen mit einem Objekt verbunden werden Eigenschaften sind typisiert (string, int...) Bsp.: Titel...
8
© Raphael Volz 2001 Slide 8 Agenda Verwaltung von Zope Objekten Zugriff auf Zope Objekte Grundlegende Zope Techniken –DTML –Python –Zope API
9
© Raphael Volz 2001 Slide 9 Zugriff auf Objekte Akquisition Ein Objekt hat Zugriff auf alle Objekte, die sich entlang des Pfades vom Objekt in Richtung Wurzel befinden. Beispiel: Zoo/LargeAnimals/giraffe/feed
10
© Raphael Volz 2001 Slide 10 Request-Objekt Wird bei jedem Aufruf eines Zope-Objektes durch einen Clienten neu erzeugt Enthält Wichtige Daten vom Clienten, z.B.: –Aufgerufene URL –Formulardaten –Cookies –Parameter DTML-Tipps: – gibt alle Elemente des REQUEST Objekts aus. – Erzeugt eine neue Variable „Semester“ innerhalb des Request- Objekts
11
© Raphael Volz 2001 Slide 11 Zugriff auf Variablen Zugriff auf Variablen und Objekte über Namen (identifier) Variablen können an verschiedenen „Orten“ definiert sein: –Request-Objekt –innerhalb Objekt –Objekt-Eigenschaft –innerhalb Objekthierarchie Jeder „Ort“ definiert einen Namensraum (namespace)
12
© Raphael Volz 2001 Slide 12 Finden von Variablen Variablen werden zuletzt im Request-Objekt gesucht. Für das Client Object gelten die Regeln der Akquisition Nutzung eines bestimmten Namensraums kann erzwungen werden REQUEST Name: „Petra“ Name: „Hans“ Min_weight: 100 Remote_Addr: 192.168.1.1 Owner: „Stadt K‘he“
13
© Raphael Volz 2001 Slide 13 Agenda Verwaltung von Zope Objekten Zugriff auf Zope Objekte Grundlegende Zope Techniken –DTML –Python –Zope API
14
© Raphael Volz 2001 Slide 14 DTML Document Template Markup Language Proprietär Dynamische Erzeugung von Inhalten (z.B.: HTML, XML,...) „_“ wird als Namespace-Variable bezeichnet. –Darüber erfolgt Zugriff auf die Zope API und freigegebene Python-Bibliotheken. –Bsp.: Ausgabe: „10.1“
15
© Raphael Volz 2001 Slide 15 DTML-var Ausgabe von Variablen und Objekten Ausgabe ist typ-abhängig –Datei (File) Inhalt –Bild (Image) Link zu Bild und Img-Attribute –... Attribute –Name Namen, der im Namespace nachgeschlagen werden soll –Expr Auswertung von Python-Ausdrücken (gemäß Python- Syntaxregeln –Fmt Formatierung der Ausgabe Beispiele –...
16
© Raphael Volz 2001 Slide 16 DTML-call Aufruf von Aktionen Keine Ausgabe Beispiel:
17
© Raphael Volz 2001 Slide 17 DTML Verzweigungen,,, Beispiele: Die Variable/Objekt „snake“ existiert 5"> num is greater than five num is less than five num must be five
18
© Raphael Volz 2001 Slide 18 DTML Iteratoren durchläuft Mengen Das aktuelle abgerufene Element wird oben auf den Namespace-Stapel gelegt. Beispiel: bgcolor="#EEEEEE" bgcolor="#FFFFFF"
19
© Raphael Volz 2001 Slide 19 Veränderung des Namespace-Stapel Deklaration/Veränderung von Variablen: Auswahl eines Namespace 'id' was not in the request. (Neuer) Namespace wird ganz nach oben sortiert
20
© Raphael Volz 2001 Slide 20 Ausnahmebehandlung,,, Beispiel: Teilung durch Null geht nicht.
21
© Raphael Volz 2001 Slide 21 DTML Beispiele Cookie-Management Formularbehandlung
22
© Raphael Volz 2001 Slide 22 Cookie Management Setzen eines Cookie: Auslesen eines Cookie:
23
© Raphael Volz 2001 Slide 23 Formularverarbeitung Was sind Ihre Lieblingsgerichte Schnitzel Bockwurst Sauerkraut Semmelknödel Saumagen Sie mögen gerne: Über alles ausgewählte iterieren Sie essen wohl nichts... Inputform_process
24
© Raphael Volz 2001 Slide 24 Python-Skripte Entwicklung in der Sprache Python Eingeschränkter Zugriff auf Standard Python Module Attribute des Skripts müssen angegeben werden Bindings
25
© Raphael Volz 2001 Slide 25 Bindings Context Objekt, welches das Skript aufruft; auch „acqusition parent“ Container Ordner, in welchem das Skript abgelegt ist Script Selbstreferenz auf das Skript Namespace Nur bei Aufruf aus DTML heraus: Namespace des Aufrufenden Subpath Teil der URL nach dem Skriptnamen (Liste von Strings) Nutzung wie jedes andere Python-Objekt
26
© Raphael Volz 2001 Slide 26 Rückgabe aus Python-Skripten Standard Python Rückgabe „return“ Umlenkung der Standardausgabe: –„print“ Statements wie normal nutzen –„return printed“
27
© Raphael Volz 2001 Slide 27 Zope API Siehe Zope Book Appendix A + B Beispiel ObjectManager-Methoden: –manage_addProduct['OFSP'] Mapping-Methode, die Zugriff auf Objektkonstruktoren des OFSP ermöglicht. –manage_addFolder(id, title) Objektkonstruktor für einen Ordner DTML: Python: context.manage_addProduct['OFSP'].manage_addFolder(id, title)
28
© Raphael Volz 2001 Slide 28 Python-Skript Beispiel Gästebuch Du bist: Deine Weisheit (HTML erlaubt): DTML Doc „enter“ """ Create a guest book entry. """ # create a unique document id id='entry_%d' % len(context.objectIds()) # create the document context.manage_addProduct['OFSP'].manage_addDTMLDocument(id, title="", file=comments) # add a guest_name string property doc=getattr(context, id) doc.manage_addProperty('guest_name', guest_name, 'string') Skript „addEntry“ – comments, guest_name sind Parameter
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.