On Thu, Jun 17, 2010 at 3:35 PM, Johannes Dollinger
<johannes.dollin...@einfallsreich.net> wrote:
> Am 17.06.2010 um 18:23 schrieb Ian Lewis:
>
>> The example he provided isn't terribly good but you don't need an view
>> instance per request (the example will work unless you start adding
>> stuff to self or overwriting self.qs etc). Only shared state is stored
>> at the class level and view customization is done at the class
>> instance level as well. That state shouldn't change.
>>
>> Attaching all kinds of stuff to self tends to depend on the order of
>> the methods called and allows for some ugly coding styles. In that
>> case the slightly strange idea of merging the request and the view by
>> extending HttpRequest starts to make sense since otherwise you would
>> have some state on the request object (like the user etc. as it is
>> now) and some state on the view object.
>>
>> That said, both extending HttpRequest and using __new__ seem like a
>> hacks to me. Personally the idea of a view being a callable class
>> instance or method is simple and flexable enough to handle any use
>> cases we are talking about. You just have to think of self as the
>> *view* rather than a thread safe request because that's what it is.
>>
>> Having a view object per request makes no sense. You should have a
>> request object per request.  It is largely a result of wanting the
>> convenience of being able to write sloppy code that writes all kinds
>> of state to self rather than a technical necessity.
>>
>> Ian
>
> I'd like to support Ian and Patryk's position: class based views should not
> be instantiated for each request - for all the reasons Ian gave in the
> quoted mail.
> If you want to avoid passing around (lots of) arguments between methods, you
> can always store request specific state on the request instance, which is a
> common pattern for middleware already.
> To prevent the request's dict from becoming too cluttered, simply put the
> arguments into `request.view_context` (a dict or similar container, needs to
> be painted).
>
> __
> Johannes
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django developers" group.
> To post to this group, send email to django-develop...@googlegroups.com.
> To unsubscribe from this group, send email to
> django-developers+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-developers?hl=en.
>
>

So here's an idea, of dubious quality ;)  Only pass request around to
methods, and have a requests dictionary on the view (which is
instantiated once) then methods can use that dict to store data in it.

Alex

-- 
"I disapprove of what you say, but I will defend to the death your
right to say it." -- Voltaire
"The people's good is the highest law." -- Cicero
"Code can always be simpler than you think, but never as simple as you
want" -- Me

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-develop...@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to