[ZPT] How to getId() of pt from a Script (Python)

Clemens Klein-Robbenhaar crobbenhaar at web.de
Tue Oct 4 16:04:18 EDT 2005


José Henrique wrote:
> Use "print template.getId()".
> 
> 2005/10/4, Chris Miles <miles.chris at gmail.com>:
> 
>>I have a Page Template in a folder: folder1/mypage.pt
>>containing:
>>  <span tal:replace="here/myscript">Testing</span>
>>
>>myscript is a Script (Python) containing:
>>  print context.getId()
>>  return printed
>>
>>Now, when folder1/mypage.pt is called TTW, it displays "folder1" as the
>>context.getId(), but I was expecting (and hoping) it would display
>>"mypage.pt"...  Isn't it being called within the "context" of mypage.pt
>>?

  I am not sure if the solution above works that straight in the script;
it does not magically inherit the "template" variable from the page
template, does it?

  The way I would prefer to handle this is to pass the template to the script
explicitely, e.g.:

   <span tal:replace="python:here.myscript(template)">Testing</span>

Then add "template" to the parameters of Your script, and
template.getId() will work.

  If this is to explicit for You, calling the script via:

<span tal:replace="template/script">Testing</span>

should do what You want: not the script is called having the
template as the context (unlike "here/script", where the script has
the same context as the template).

Cheers,
Clemens



More information about the ZPT mailing list