[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="© 2004 & Anders Bruun Olsen
> <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