On Jul 16, 2005, at 8:10 PM, John Smith wrote:
Dear All, I hope I have the right mailing list. Perhaps someone can help me with a fairly basic question. When I used Zope 2, I used the following idiom for form submission. Send http POST to Script(Python) or External Method, which would then return a ZPT like this: return context.myZPT(arg1=xyz, arg2=abc, etcetera). In the ZPT, I could then access arg1, arg2 via the 'options' TAL name.
FWIW, the same behavior holds true in Zope 3 as well for "zope.app.pagetemplate.ViewPageTemplateFile"s. They are generally attributes on a view class, though, so a method on the view might pass arguments to the template (that are then available in 'options', as you are familiar). However, since the template also has the view, as you note below, you might not need to.
Now, I am getting along OK with Zope3. I understand that the basic TAL namespaces available in a ZPT are view, request and context. As far as I can tell from documentation and examples, POST requests are handled by the self.request.response.redirect idiom.
Actually, no. The standard idiom is to self-post. The view class (in __call__, at its most primitive level) is then responsible for deciding what to draw. If you do an actual redirect (in Zope 2 and Zope 3) then you are responsible for passing things around in the query string, or the session, or an annotation, or what have you.
My problem with this method is that it causes the instantiation of a new view component, so I cannot hold state with the 'view'.
Why do you need to redirect? Do you actually mean an HTTP redirect? Or are you looking up a different view from within the first view's __call__, and rendering it for the first view to return? Not sure what you are doing.
It is possible to annotate the request, but you shouldn't have to for this use case. That should be used sparingly.
Gary _______________________________________________ Zope3-users mailing list Zope3email@example.com http://mail.zope.org/mailman/listinfo/zope3-users