Class Based View are awesome, except the ones which are built in?

I agree, as has been suggested, that if you make a really flat class
based views like the admin itself, you can gain some benefits, but I
still think those benefits are heavily tied to assumptions one can
make in a specific problem space. Keeping the ability to create a
Class Based View has value, but it is up to to the people who like
them to show the rest of us how they can be used with out creating
more problems then they solve, and just because they exist doesn't
mean they should be used more than they are. Apparently when it comes
to generic class based view they should be used less.

Albert

On Tue, Jun 5, 2012 at 9:14 AM, Donald Stufft <donald.stu...@gmail.com> wrote:
> On Tuesday, June 5, 2012 at 9:05 AM, Albert O'Connor wrote:
>
> My feeling is that though some people might have uses for CBV, we
> shouldn't be suggesting that developers should prefer CBV to function
> based views. When it comes to maintainability, FBV are better, and I
> would agree that they are more Pythonic.
>
> When I tried to use CBV, I found the inheritance semantics lead to
> unexpected results when composing mixins. I wanted to spend my time
> creating web apps and not debugging to figure what 3 lines of glue
> code I would have to write in the correct overridden method to make
> CBV work for me in my usecase. At the time I felt of have a list of
> say context providers would have made more sense than mixins.
>
> Don't confuse the current Generic Class Based Views with Class Based
> Views in general. In almost every case Class Based Views are a net win,
> it's the generic views that are often the incorrect choice (as it makes
> sense,
> if what your view is doing isn't generic, then a Generic view isn't what you
> need).
>
>
> If people have uses for CBV, they should be available, but advocating
> that more builtin or contrib views should be made class based is
> something I would be against personally, unless it really made sense
> in a specific use case.
>
> Albert O'Connor
>
> On Tue, Jun 5, 2012 at 2:02 AM, Marc Tamlyn <marc.tam...@gmail.com> wrote:
>
> There is a plan to do some work on the docs at the djangocon sprints - in
> particular trying to get some examples of when you 'could' and when you
> 'should not' use the generic CBVs.
>
> With regards to Zach's point about TDD testing - some of that may simply be
> familiarity. I don't know about you but it would have been very difficult
> for me to get into successfully TDDing a functional view until I'd written
> several dozen views and knew what the pattern is. You can still test the CBV
> top to bottom, exactly as you would with a function based view. Yes there
> may be some shift to conventions, but that will come with familiarity.
>
> I think part of the important difference is that when you look at a CBV for
> the purposes of unit testing it, you feel very quickly that you should be
> testing the individual methods. This is actually really nice and gives a lot
> more branch-coverage without rerunning the same 4 database queries every
> time for variables which aren't used. Without CBVs a complex view can easily
> extend over 50 or so lines, whereas it's more natural to split this up and
> test the sections independently with a Class based system. I know in general
> we should be 'writing less view code' and pushing the logic elsewhere, but
> that depends on what that logic is - for example the view layer needs to
> decide whether to return JSON or HTML depending on certain headers in the
> request, and that is more easily testable as an overridden render to
> response method than as the last 4 lines of a 50 line view.
>
> Marc
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django developers" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/django-developers/-/VZsGxxTYyoIJ.
>
> To post to this group, send email to django-developers@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.
>
>
>
>
> --
>
> <><><>< Albert O'Connor - amjoc...@gmail.com
>
> albertoconnor.ca | wildernesslabs.ca | watpy.ca
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django developers" group.
> To post to this group, send email to django-developers@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.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django developers" group.
> To post to this group, send email to django-developers@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.



-- 
><><><>< Albert O'Connor - amjoc...@gmail.com
albertoconnor.ca | wildernesslabs.ca | watpy.ca

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@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