Jean-Marc Orliaguet wrote:
Jim Fulton wrote:


Jean-Marc Orliaguet wrote:


...

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
renderable.

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
IBrowserRequest.

Jim



OK, so the 'view' object set in page templates is not the object to call
for rendering the page.

Uh, normally the page template renders the page.

Different views are constructed differently.  Views created
with the page directive and views created with a view directive
without page subdirectives *can* be called to render pages --
basically because they *are* pages.  OTOH a view directive with
page subdirectives is meant to be traversed to get to it's pages,
which then can be called.

All in all, I managed to render the '+' view by calling the 'template'
object and passing the 'view' as the instance parameter


markup = template(instance=view)

I'm confused. Aren't you already in the template?

Jim


--
Jim Fulton           mailto:[EMAIL PROTECTED]       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org
_______________________________________________
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com

Reply via email to