On 12 nov, 00:06, Russell Keith-Magee <russ...@keith-magee.com> wrote:
> On Fri, Nov 12, 2010 at 9:09 AM, hcarvalhoalves
>
>
>
>
>
> <hcarvalhoal...@gmail.com> wrote:
> > To be fair, I only had one small pet peeve with the current views API
> > after trying the alpha: the use of self.args / self.kwargs.
>
> > There's added value on being able to see which parameters a view
> > expects by seeing it's method signature:
>
> > def publisher(request, publisher_name):
> >    publisher = get_object_or_404(Publisher,
> > name__iexact=publisher_name)
> >    ...
>
> > As opposed to (from the release notes):
>
> > class PublisherBookListView(ListView):
> >    ...
> >    def get_queryset(self):
> >        publisher = get_object_or_404(Publisher,
> > name__iexact=self.args[0])
> >        ...
>
> > Using keyword arguments help a little more, so you don't pass values
> > around blindly based on indexes only. Still, the keyword will be lost
> > somewhere in the middle of the method. It's a lot less clear than just
> > checking a method signature.
>
> Thanks for the feedback. And what is your suggestion for fixing this?
>
> > In 1.x, I liked the fact of having reverse() automatically fail loud
> > when the method signature didn't matched my URL pattern. That helps to
> > catch a lot of views-urls mismatches. Can that behaviour be replicated
> > with the class-based API by overriding it's __init__, instead of
> > tucking parameters away on self.args/kwargs? Or there's really a
> > philosophy that views should just trust URL pattern matching?
>
> Yes, overriding a class to provide a specific list of keyword
> arguments to __init__ would work, and would provide the error handling
> you describe.

Perfect, because I would expect most of client code to define view
classes like it's usually done with methods, with a fixed argument
list.

> As for whether views should just trust URL patterns: We're defining
> generic views. Introducing generic argument handling -- **kwargs -- is
> part of that pattern. When you make something more generic, one of the
> things you lose is specific error handling.

Ok, I understand that. I have no gripes on generic views accepting a
variable argument list as long as it Just Works. My concern was if
this should be the case for derived view classes too (which you
already answered about redefining __init__).

> Broadly speaking, what you're proposing sounds good to me. Tighter
> error handling is always a good thing, and the current API hasn't made
> an active decision to suppress error handling -- it's just a
> consequence of making views generic.
>
> However, we need a specific suggestion. If you can make a specific
> suggestion (preferably in the form of a patch), I'm happy to entertain
> that suggestion.
>
> 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-us...@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