title: Django class based views - request, args and kwargs objects
body: <p>It seems to me that in Django's generic class-based views, the parameters <code>request</code>, <code>args</code> and <code>kwargs</code> travel from method to method, both as view instance attributes, as well as method arguments.</p>
  
  <p>What do I mean exactly?</p>
  
  <p>Class <code>django.views.generic.base.View</code>, defines the following function, called by its <code>as_view</code> method:</p>
  
  <pre><code>def view(request, *args, **kwargs):
      self = cls(**initkwargs)
      if hasattr(self, 'get') and not hasattr(self, 'head'):
          self.head = self.get
      self.request = request
      self.args = args
      self.kwargs = kwargs
      return self.dispatch(request, *args, **kwargs)     
  </code></pre>
  
  <p>This function first sets <code>request</code>, <code>args</code> and <code>kwargs</code> as view instance attributes, and then invokes the view's <code>dispatch</code> method with all these as arguments. What exactly is the purpose of this, if any? Isn't it redundant? </p>