Seite 1 von 1

Ausdrücke dynamisch zusammenbasteln in Page Templates

Verfasst: Dienstag 22. Februar 2005, 13:43
von BrainLeak
Hallo Freunde von Python und Zope,

ich bin noch ein ziemlicher Anfänger auf dem Gebiet und bin jetzt gerade mal wieder böse gestolpert. Hier mein Problem:

Ich möchte einen Ausdruck in der Form

Code: Alles auswählen

here/Dort/Woanders
auführen. Das funktioniert an sich prima, doch das Problem ist das "Dort" und "Woanders" String-Variablen sind, die auf beliebige vorhandene Dokumente/Objekte/Methoden gesetzt sein können. String Variablen heißt sie wurden in etwa so definiert:

Code: Alles auswählen

tal:define="global Dort string:Gustav"
Wenn ich nun hingehe und das Ganze zusammensetze
dann wird der String ausgegeben und nicht der Ausdruck ausgeführt. Irgendeine Idee wie ich das hinkriegen könnte? Ist das überhaupt möglich? Tausend Dank jetzt schon mal!

Re: Ausdrücke dynamisch zusammenbasteln in Page Templates

Verfasst: Dienstag 22. Februar 2005, 17:33
von gerold
BrainLeak hat geschrieben:Ich möchte einen Ausdruck in der Form

Code: Alles auswählen

here/Dort/Woanders
auführen. Das funktioniert an sich prima, doch das Problem ist das "Dort" und "Woanders" String-Variablen sind, die auf beliebige vorhandene Dokumente/Objekte/Methoden gesetzt sein können. String Variablen heißt sie wurden in etwa so definiert:

Code: Alles auswählen

tal:define="global Dort string:Gustav"
Wenn ich nun hingehe und das Ganze zusammensetze
dann wird der String ausgegeben und nicht der Ausdruck ausgeführt.
Hallo BrainLeak!

Da mir jetzt im Moment nichts besseres einfällt (es geht sicher auch anders...), würde ich mit Objekten arbeiten. Das sieht dann so aus:

Code: Alles auswählen

<tal:block tal:define="global Dort python:getattr(here, 'Dort');
                       global Woanders python:getattr(Dort, 'Woanders')"
/>
<p tal:content="Woanders" />
mfg
Gerold
:-)

Verfasst: Mittwoch 23. Februar 2005, 15:34
von BrainLeak
Vielen Dank für Deine schnelle Antwort. Leider hat das nicht hingehaun. Kannst Du vielleicht mal posten, wie Du 'Dort' und 'Woanders' deklarierst, sprich das define Statement, danke!

Verfasst: Mittwoch 23. Februar 2005, 15:56
von BrainLeak
Sorry ich stand mal wieder völlig auf dem Schlauch. Jetzt weis ich was Du mit Objekten meintest :D
Ich wußte nicht, dass "Dort" und 'Woanders'einfach einfach die Objektnamen warenm, also nix mit definieren. Jetzt funktioniert es perfekt. Du hast mir den Arsch gerettet :wink:

Verfasst: Mittwoch 23. Februar 2005, 16:01
von gerold
Hi!

Mein Beispiel setzt voraus, dass "Dort" ein Objekt im aktuellen Ordner ist. Woanders muss ein Objekt/Attribut innerhalb des Objektes "Dort" sein. Sonst
funktioniert das nicht.

"getattr" gibt ein benanntes Attribut des übergebenen Objektes zurück.

mfg
Gerold
:-)

Verfasst: Mittwoch 23. Februar 2005, 16:05
von BrainLeak
Danke für die Erklärung - wieder was gelernt! :)