Jean-Marc Orliaguet wrote:

I've encountered a problem when trying to render views (there is no
problem with rendering pages), but for instance with the '+' view that
is defined in app/container/browser/configure.zcml

      menu="zmi_actions" title="Add"
      allowed_attributes="addingInfo isSingleMenuItem hasCustomAddView">

    <page name="index.html"  template="" />
    <page name="action.html" attribute="action" />


when called with:

    markup = view()

['view' being the 'view' variable gotten from ZPT)

results in the following error message:

    markup = view()
  File "/home/jmo/Zope3/src/zope/app/publisher/browser/",
line 445, in __call__
    attr = self.__page_attribute__
AttributeError: '+' object has no attribute '__page_attribute__'

because the __call__ method of expects views and pages to
have a page attribute:

    def __call__(self, *a, **k):
        # If a class doesn't provide it's own call, then get the attribute
        # given by the browser default.

        attr = self.__page_attribute__

With the '+' view described above, there is a default page attribute to
use for displaying the view ('index.html') and but no page attribute
explicitly assigned.

The following patch fixes the problem, but I'm afraid that I'm missing
something: are views supposed to have a '__page_attribute__' or not?

They are only supposed to ave a page attribute if they are pages. :)

The directive above creates a view *with pages*.  This means that the
view itself should not a page and is not intended to be callable.

Bottom line: views created this way are not callable and are not directly

There's a bit more complexity than I'd like in these view directives. This is
why, more and more, I tend to *define* views in Python and just register them
with the adapter or view directive.  I still do often find it useful to register
views with the view directive, mainly so I can avoid having to mention 


Jim Fulton           mailto:[EMAIL PROTECTED]       Python Powered!
CTO                  (540) 361-1714  
Zope Corporation
Zope3-dev mailing list

Reply via email to