Ausdrücke dynamisch zusammenbasteln in Page Templates

Django, Flask, Bottle, WSGI, CGI…
Antworten
BrainLeak
User
Beiträge: 5
Registriert: Dienstag 22. Februar 2005, 13:33

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!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BrainLeak
User
Beiträge: 5
Registriert: Dienstag 22. Februar 2005, 13:33

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!
BrainLeak
User
Beiträge: 5
Registriert: Dienstag 22. Februar 2005, 13:33

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:
Zuletzt geändert von BrainLeak am Mittwoch 23. Februar 2005, 16:04, insgesamt 1-mal geändert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BrainLeak
User
Beiträge: 5
Registriert: Dienstag 22. Februar 2005, 13:33

Danke für die Erklärung - wieder was gelernt! :)
Antworten