Russell,

On a separate note, I am curious about these 'copy-on-call' leaks, and I
have not seen this behaviour documented anywhere else.

"The abstraction of the copy-on-call can leak in surprising ways. Some
users will try to set up state using an __init__ method (common practice).
If any of the state they attach to self in __init__ is mutable (list, dict,
object, etc) and they mutate it in the view, this will fail (but not
immediately, or in obvious ways)."

Could you elaborate further on this, possibly with a rough example?

Not arguing that CBV approach should be changed, but this
copy-on-call behaviour is quite unexpected, no?

Cal

On Fri, Sep 14, 2012 at 10:16 AM, Cal Leeming [Simplicity Media Ltd] <
cal.leem...@simplicitymedialtd.co.uk> wrote:

>
>
> On Fri, Sep 14, 2012 at 12:12 AM, Russell Keith-Magee <
> russ...@keith-magee.com> wrote:
>
>> On Thu, Sep 13, 2012 at 12:58 AM, Cal Leeming [Simplicity Media Ltd]
>> <cal.leem...@simplicitymedialtd.co.uk> wrote:
>> > Hi all,
>> >
>> > There is a lot of debate on whether there is a real future for the
>> Django
>> > CBVs (class based views).
>>
>> Sigh.
>
>
> Thank you for the detailed response on this - hopefully this thread will
> serve as a reference point for people in the future
>
>
>>
>> No - there isn't *any* debate about the future of CBVs. There *are* a
>> lot of people who apparently don't like them who keep making a lot of
>> noise. Every single time I've spoken with one of those people at
>> length, the problem has reduced to either:
>>
>>  1) I don't like classes/OO. There's no winning these people over.
>
>
> Well that's certainly not the reason I dislike them - OO makes views
> tidier, simple.
>
>
>>  2) CBV's aren't documented well. You won't get any argument from me
>> on (2). I'll take the hit for that -- the initial documentation for
>> CBVs was my doing, and it has lots of room for improvement.
>
>
> +1
>
>
>
>
>> I'm not aware of anyone in the core that has advocated removing
>> class-based views from Django.
>
>
>> > Personally, I find them tedious, and just wanted a
>> > way to keep my views clean.
>> >
>> > So, here is a really minimalistic way of having class based views,
>> without
>> > the fuss.
>> >
>> > http://djangosnippets.org/snippets/2814/
>> >
>> > This is a fork from:
>> >
>> > http://stackoverflow.com/questions/742/class-views-in-django
>> > http://djangosnippets.org/snippets/2041/
>> >
>> > My thanks to eallik for his initial post on stackoverflow for this.
>> >
>> > Personally I think Django's CBVs should offer a really minimalistic base
>> > like this, as well as the existing CBV stuff already in the core - so
>> as to
>> > not force people into needing to learn an entirely new way of doing
>> things,
>> > but at the same time allowing them to reap some of the benefits of using
>> > callable classes as views.
>> >
>> > Any thoughts?
>>
>> What you've described -- a single entry point class-based view base
>> class -- *does* exist. It's called django.views.generic.View. Override
>> the "dispatch" method, or write a "get/post/put/etc" method, and
>> you've got a class-based view.
>>
>
> I noticed this yesterday whilst trawling through the documentation again,
> so I will look at this again.
>
>
>>
>> I also think you should read the discussions that led to the current
>> form of Class-based views. The pattern you've proposed from Stack
>> Overflow was one of many suggestions that were made, and were rejected
>> because of inherent problems with the approach. The discussions are
>> summarised in the wiki:
>>
>> https://code.djangoproject.com/wiki/ClassBasedViews
>
>
> Thanks for sending this link through, looks very detailed, I will spend an
> hour or two reading through it all and put some thoughts back.
>
>
>>
>>
>> Yours,
>> Russ Magee %-)
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Django users" group.
>> To post to this group, send email to django-users@googlegroups.com.
>> To unsubscribe from this group, send email to
>> django-users+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/django-users?hl=en.
>>
>>
>

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

Reply via email to