[Zope-dev] REQUEST vs. request

Martin Aspeli optilude+lists at gmail.com
Tue Jun 16 20:50:51 EDT 2009


Patrick Gerken wrote:
> Hello,
> 
> I am a bit confused about self.request and self.REQUEST.
> Can anybody point me to an explanation of the different tasks that both 
> have?
> Googling for request vs REQUEST is not helpful...

D'oh! :-)

REQUEST is a Zope2-ism. When you do self.REQUEST somewhere, you are 
actually using acquisition to get this object from the outermost item in 
any (most?) acquisition chain: a magic RequestContainer class whose 
purpose it is to let you acquire a REQUEST.

In general, this is a bit icky. You probably should avoid it.

self.request is not generally available. Rather, it's the most commonly 
used name for the request stored on an attribute in a view or viewlet. 
These are initialised with a context and a request (and view and viewlet 
manager in the case of a viewlet), and normally store those as 
self.context and self.request.

In Zope 2, your views *also* support acquisition, because until Zope 
2.12 at least, they have to in order to have security. So you can do 
self.REQUEST on the view, which acquires it from a parent. But this is 
magic and you shouldn't do it if you can avoid it.

Martin

-- 
Author of `Professional Plone Development`, a book for developers who
want to work with Plone. See http://martinaspeli.net/plone-book



More information about the Zope-Dev mailing list