diff options
| author | Tom Christie | 2013-05-09 13:31:42 +0100 | 
|---|---|---|
| committer | Tom Christie | 2013-05-09 13:31:42 +0100 | 
| commit | 31f94ab409f1d5f41982a5946b980cf3ad8e3ba9 (patch) | |
| tree | 3b5f65e21eb0d177578ae760a46fe8eda1f6277f /docs/api-guide | |
| parent | f2466418dd325ed1353d4e0056411c16e96c2073 (diff) | |
| download | django-rest-framework-31f94ab409f1d5f41982a5946b980cf3ad8e3ba9.tar.bz2 | |
Added GenericViewSet and docs tweaking
Diffstat (limited to 'docs/api-guide')
| -rw-r--r-- | docs/api-guide/viewsets.md | 25 | 
1 files changed, 16 insertions, 9 deletions
| diff --git a/docs/api-guide/viewsets.md b/docs/api-guide/viewsets.md index d98f37d8..e354a43a 100644 --- a/docs/api-guide/viewsets.md +++ b/docs/api-guide/viewsets.md @@ -136,9 +136,15 @@ The `ViewSet` class inherits from `APIView`.  You can use any of the standard at  The `ViewSet` class does not provide any implementations of actions.  In order to use a `ViewSet` class you'll override the class and define the action implementations explicitly. +## GenericViewSet + +The `GenericViewSet` class inherits from `GenericAPIView`, and provides the default set of `get_object`, `get_queryset` methods and other generic view base behavior, but does not include any actions by default. + +In order to use a `GenericViewSet` class you'll override the class and either mixin the required mixin classes, or define the action implementations explicitly. +  ## ModelViewSet -The `ModelViewSet` class inherits from `GenericAPIView` and includes implementations for various actions, by mixing in the behavior of the +The `ModelViewSet` class inherits from `GenericAPIView` and includes implementations for various actions, by mixing in the behavior of the various mixin classes.  The actions provided by the `ModelViewSet` class are `.list()`, `.retrieve()`,  `.create()`, `.update()`, and `.destroy()`. @@ -188,17 +194,18 @@ Again, as with `ModelViewSet`, you can use any of the standard attributes and me  # Custom ViewSet base classes  -Any standard `View` class can be turned into a `ViewSet` class by mixing in `ViewSetMixin`.  You can use this to define your own base classes. +You may need to provide custom `ViewSet` classes that do not have the full set of `ModelViewSet` actions, or that customize the behavior in some other way.  ## Example -For example, we can create a base viewset class that provides `retrieve`, `update` and `list` operations: +To create a base viewset class that provides `create`, `list` and `retrieve` operations, inherit from `GenericViewSet`, and mixin the required actions: + +    class CreateListRetrieveViewSet(mixins.CreateMixin, +                                    mixins.ListMixin, +                                    mixins.RetrieveMixin, +                                    viewsets.GenericViewSet): +        pass -    class RetrieveUpdateListViewSet(mixins.RetrieveModelMixin, -                                    mixins.UpdateModelMixin, -                                    mixins.ListModelMixin, -                                    viewsets.ViewSetMixin, -                                    generics.GenericAPIView):          """          A viewset that provides `retrieve`, `update`, and `list` actions. @@ -207,6 +214,6 @@ For example, we can create a base viewset class that provides `retrieve`, `updat          """          pass -By creating your own base `ViewSet` classes, you can provide common behavior that can be reused in multiple views across your API. +By creating your own base `ViewSet` classes, you can provide common behavior that can be reused in multiple viewsets across your API.  [cite]: http://guides.rubyonrails.org/routing.html | 
