Hi, John Kipling Lewis wrote:
On Fri, 30 May 2003, Dmitry Dembinsky wrote:
We use tal:define for this purpose:
<body tal:define="dummy python:foo(); <other assignments>" ...
Usually this way we run some page setup code which we put inside <body> or even top-level <html> tag.
We have done this as well. It just seemed an obvious hole in the tal system. There should be a way to execute arbitrary code in tal. Something like:
<body tal:run="python:foo()">
John -
I have to disagree whith this. Even tal:define is somewhat ugly. The design goal has to be to remove as much application code as possible from template. So always set up your data outside of the template. A handy way is to have a simply python script "dispatcher" method which calculates all values and stuff and then returns the actual template like this: -- python script -- contect.callSomething() val=context.calculateSomething() return context.Template(values=val) -- /python script-- in this example you can access values thru options/values in TAL. This is clean and handy. You even can return different templates according to a condition and set header information and so on. HTH Tino Wildenhain