Browse Source

Clarified usage of as_view kwargs for setting arguments on class based views

Thanks Dave McLain for the patch.
Tim Graham 12 years ago
parent
commit
7b2d95eb30
2 changed files with 6 additions and 4 deletions
  1. 3 2
      django/views/generic/base.py
  2. 3 2
      docs/ref/class-based-views/index.txt

+ 3 - 2
django/views/generic/base.py

@@ -54,8 +54,9 @@ class View(object):
                                 "keyword argument to %s(). Don't do that."
                                 % (key, cls.__name__))
             if not hasattr(cls, key):
-                raise TypeError("%s() received an invalid keyword %r" % (
-                    cls.__name__, key))
+                raise TypeError("%s() received an invalid keyword %r. as_view "
+                                "only accepts arguments that are already "
+                                "attributes of the class." % (cls.__name__, key))
 
         def view(request, *args, **kwargs):
             self = cls(**initkwargs)

+ 3 - 2
docs/ref/class-based-views/index.txt

@@ -37,10 +37,11 @@ A class-based view is deployed into a URL pattern using the
     is modified, the actions of one user visiting your view could have an
     effect on subsequent users visiting the same view.
 
-Any argument passed into :meth:`~django.views.generic.base.View.as_view()` will
+Arguments passed into :meth:`~django.views.generic.base.View.as_view()` will
 be assigned onto the instance that is used to service a request. Using the
 previous example, this means that every request on ``MyView`` is able to use
-``self.size``.
+``self.size``. Arguments must correspond to attributes that already exist on
+the class (return ``True`` on a ``hasattr`` check).
 
 Base vs Generic views
 ---------------------