Luke, you're absolutely right that changing the definition of a view is a bad idea, it just seemed the best solution then.
But don't worry, we've changed our minds again! If __call__() creates a copy of self and calls methods on the copy, as far as I can see it solves all our problems. No boilerplate, and it's really hard to make it unsafe thread-wise. An example of how it could work: http://github.com/bfirsh/django-class-based-views/blob/master/class_based_views/base.py Thanks Ben On 29 May 2010, at 00:07, Luke Plant wrote: > On Friday 28 May 2010 15:51:32 Jacob Kaplan-Moss wrote: > >> My only real objection here is that `as_view` is just a bunch of >> boilerplate:: >> >> urlpatterns = patterns('', >> ('one/', SomeView.as_view()), >> ('two/', SomeOtherView.as_view()), >> ('three', YourView.as_view()) >> ) >> >> I just really don't like the way that looks. > > Agreed. I also think that if you have a mixture of normal views and > class based view, this is ugly: > > urlpatterns = patterns('app.views', > ('one/', 'some_view_function', > ('two/', SomeOtherView), > ('three/', YourView) > ) > > and it would be nicer to spell it: > > urlpatterns = patterns('app.views', > ('one/', 'some_view_function'), > ('two/', 'some_other_view'), > ('three/', 'your_view') > ) > > and have these additional lines in 'app.views': > > some_other_view = SomeOtherView.as_view() > your_view = YourView.as_view() > > I know that is just moving the boilerplate around, but it is giving a > consistent interface. If some code in a re-usable app moves from > normal views to class based views, they will have to do something like > this *anyway* for backwards compatibility. > > But I can see that if subclassing is the default way of re-using, then > exporting these functions gives multiple options about how they should > be re-used, which you are wanting to avoid. > >>> There is also the issue of what to do when you need to add a >>> decorator to someone else's view function. >> >> Again, I want to encourge "subclass it" as the correct answer here. > > In that case, I guess it would be good to make this hard to do wrong, > by providing helpers that add the decorator to the right end of the > list of decorators. > > Regards, > > Luke > > -- > "Oh, look. I appear to be lying at the bottom of a very deep, dark > hole. That seems a familiar concept. What does it remind me of? Ah, > I remember. Life." (Marvin the paranoid android) > > Luke Plant || http://lukeplant.me.uk/ > > -- > 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. > -- 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.