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 > (mailto: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 > > (mailto:django-developers@googlegroups.com). > > To unsubscribe from this group, send email to > > django-developers+unsubscr...@googlegroups.com > > (mailto: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 (mailto: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 > (mailto:django-developers@googlegroups.com). > To unsubscribe from this group, send email to > django-developers+unsubscr...@googlegroups.com > (mailto: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.