[silva-dev] request.model in public layout
Andy Altepeter
aaltepet at bethel.edu
Tue Apr 4 16:25:26 CEST 2006
On Tuesday 04 April 2006 9:10 am, Roman Joost wrote:
> Hi Jan-Wijbrand,
>
> On Tue, Apr 04, 2006 at 01:17:38PM +0200, Jan-Wijbrand Kolman wrote:
> > This fix involves an explicit delete of the model from the request, when
> > the public layout is rendered. Having the model attached to the request
> > resulted in a cyclic reference of a type that could not be garbage
> > collected by Python.
> >
> > The default Silva public layout templates make no use of the model that
> > used to be available and having the model on the request for public
> > rendering was never intended to be a public API. In public renderings,
> > the content object being rendered is available through the 'context'
> > namespace.
>
> Maybe I just got it totally wrong here, but is the model deleted from the
> request *after* the view is rendered, or when does this happen?
>
> SilvaObject still adds the model to the request and I still run into
> problems if I try to render public views without providing the model as
> a request attribute.
I think what jw is saying is that 'model' will no longer be an attribute of
REQUEST but of REQUEST.other (i.e. self.REQUEST.other['model'] = model).
further in jw's email:
> For the rare situations where you have developed code for the public
> rendering of content that uses model.request (or model/request in a
> pagetemplate) we now add the model to the request.other dictionary.
Because of REQUEST's getattr magic, request.model or request/model will still
work.
What I don't understand, though, is why an explicit delete is required _only_
for the public layout? Shouldn't the potential memory leak happen in other
views as well?
Andy
More information about the silva-dev
mailing list