Frank Burkhardt wrote:

Hi,

a short introduction first:

I'm Frank Burkhardt, working at the Max Planck Institute in Germany. My
employer wants a new website to replace the old one (www.cbs.mpg.de - yes,
it looks really really ugly). We chose Zope3 to implement it.
Maybe there will be one or two questions on the way which is the reason
why I joined this list :-) .


Here is the first one:

I assigned a view to my brandnew content class:

 <browser:page
    for=".test.ITest"
    name="index.html"
    permission="zope.Public"
    class=".test.TestView"
    template="view.pt"
 />

This is what I think this xml-statement should do:

When http://zope/test/index.html is called, the template
"view.pt" is evaluated which has access to the View-class
"TestView".

view.pt:
--------
<html metal:use-macro="context/@@standard_macros/view">
<div metal:fill-slot="body">
        <div tal:replace="view"></div>
</div>
</html>

But whenever I define TestView.__call__ the template is not evaluated but
the result of TestView.__call__ is returned directly.

How can Zope be forced to use the template instead of __call__ing
the TestView-Object?
If you use the the browser:form, browser:edit and/or browser:add directive your TestView will be mixed in automatically during the setup. In your example you are going to overwrite the __call__ method of the mixed-in base class which is invoking the template. If you like to overwrite the __call__ method, you have to call you base class too:

class TestView(object):
 def __call__(self):
   # do something else
   return super(TestView, self).__call__()

Regards,
Dominik
begin:vcard
fn:Dominik Huber
n:Huber;Dominik
email;internet:[EMAIL PROTECTED]
tel;work:++41 56 534 77 30
x-mozilla-html:FALSE
version:2.1
end:vcard

_______________________________________________
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users

Reply via email to