[Zope] Passing args to PageTemplateFile instances

Peter Bengtsson peter at fry-it.com
Fri Sep 23 07:39:31 EDT 2005


RESULT:
-------------------------------------------
Welcome to testprod

{'args': (<TestProd at /test/testprod used for /test/testprod>,
<HTTPRequest, URL=http://localhost:8080/test/testprod/test_testprod>),
'something': 'blah'}

0

/test/testprod

--------------------------------------------

http://www.peterbe.com/test/TestProd.tgz
So it works just fine in Zope 2.8.0
I suspect that the code you paste was idented wrong because the def
testit() function looked like it was part of the __init__ function.





2005/9/23, Anders Bruun Olsen <anders at bruun-olsen.net>:
> On Fri, Sep 23, 2005 at 12:06:00PM +0100, Peter Bengtsson wrote:
> > Please press "Reply-All" and not just to me.
>
> Sorry about that.
>
> > That is the correct way of calling PageTemplateFile objects in python
> > code. I've got it working in many places. The error must be either a
> > new zope bug or something else being wrong. Is your setup as simple as
> > you've described in the email?
>
> Yes. This is the class I am using:
>
> class TestProd(SimpleItem):
>     """A TestProd object"""
>     meta_type = "TestProd"
>     manage_options = (  {"label": "Edit", "action": "manage_main"},
>                         {"label": "View", "action": "index_html"})
>
>     manage_main = PageTemplateFile("templates/mainTestProd", globals())
>     index_html = PageTemplateFile("templates/indexTestProd", globals())
>     test = PageTemplateFile("templates/test", globals())
>
>     def __init__(self, id, title):
>         self.id = id
>         self.title = title
>
>         def testit(self, REQUEST=None):
>                 return self.test(self, self.REQUEST, something="blah")
>
> And the "test" template:
>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
> <html>
> <head>
>   <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1"
> />
>   <meta name="copyright" content="&copy; 2004 &amp; Anders Bruun Olsen
> &lt;anders(AT)bruun-olsen(DOT)net" />
>   <link rel="stylesheet" type="text/css" href="css" />
>   <title tal:content="container/title_or_id">TITLE</title>
> </head>
> <body>
>         <div>
>                 <p>Welcome to <tal:block tal:replace="container/title_or_id"/></p>
>                 <p tal:content="python:str(options)"/>
>                 <p tal:content="python:len(request.form.keys())"/>
>                 <p tal:content="python:context.absolute_url_path()"/>
>         </div>
> </body>
> </html>
>
> I have added it to the rootfolder in ZMI with the ID "testing".
>
> > What happens when you in that TAL do something like:
> > <br tal:replace="python:str(options)" />
>
> Gives: {'args': ()}
>
> > Do the other namespaces work in the page template? Eg. <br
> > tal:replace="python:len(request.form.keys())" /> or <br
>
> Gives: 0
>
> > tal:replace="python:context.absolute_url_path()" />
>
> Gives: /testing
>
> --
> Anders
> -----BEGIN GEEK CODE BLOCK-----
> Version: 3.12
> GCS/O d--@ s:+ a-- C++ UL+++$ P++ L+++ E- W+ N(+) o K? w O-- M- V
> PS+ PE@ Y+ PGP+ t 5 X R+ tv+ b++ DI+++ D+ G e- h !r y?
> ------END GEEK CODE BLOCK------
> PGPKey: http://random.sks.keyserver.penguin.de:11371/pks/lookup?op=get&search=0xD4DEFED0
>


--
Peter Bengtsson,
work www.fry-it.com
home www.peterbe.com
hobby www.issuetrackerproduct.com


More information about the Zope mailing list