diff options
| author | Tom Christie | 2012-09-03 17:49:22 +0100 |
|---|---|---|
| committer | Tom Christie | 2012-09-03 17:49:22 +0100 |
| commit | 6e21915934686cc7d46c8144403c933fa6fd2375 (patch) | |
| tree | a11ccaa21cc735b3223cb6d81796e1ebe6bf84c2 /djangorestframework/mixins.py | |
| parent | a092a72844705e3129b8996b81d8424997b5d37f (diff) | |
| download | django-rest-framework-6e21915934686cc7d46c8144403c933fa6fd2375.tar.bz2 | |
First pass at mixins & generic views
Diffstat (limited to 'djangorestframework/mixins.py')
| -rw-r--r-- | djangorestframework/mixins.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/djangorestframework/mixins.py b/djangorestframework/mixins.py index e69de29b..2721f59e 100644 --- a/djangorestframework/mixins.py +++ b/djangorestframework/mixins.py @@ -0,0 +1,64 @@ +from djangorestframework import status +from djangorestframework.response import Response + + +class CreateModelMixin(object): + """ + Create a model instance. + Should be mixed in with any `APIView` + """ + def create(self, request, *args, **kwargs): + serializer = self.get_serializer(data=request.DATA) + if serializer.is_valid(): + self.object = serializer.object + self.object.save() + return Response(serializer.data, status=status.HTTP_201_CREATED) + return Response(serializer.error_data, status=status.HTTP_400_BAD_REQUEST) + + +class ListModelMixin(object): + """ + List a queryset. + Should be mixed in with `MultipleObjectBaseView`. + """ + def list(self, request, *args, **kwargs): + self.object_list = self.get_queryset() + serializer = self.get_serializer(instance=self.object_list) + return Response(serializer.data) + + +class RetrieveModelMixin(object): + """ + Retrieve a model instance. + Should be mixed in with `SingleObjectBaseView`. + """ + def retrieve(self, request, *args, **kwargs): + self.object = self.get_object() + serializer = self.get_serializer(instance=self.object) + return Response(serializer.data) + + +class UpdateModelMixin(object): + """ + Update a model instance. + Should be mixed in with `SingleObjectBaseView`. + """ + def update(self, request, *args, **kwargs): + self.object = self.get_object() + serializer = self.get_serializer(data=request.DATA, instance=self.object) + if serializer.is_valid(): + self.object = serializer.deserialized + self.object.save() + return Response(serializer.data) + return Response(serializer.error_data, status=status.HTTP_400_BAD_REQUEST) + + +class DestroyModelMixin(object): + """ + Destroy a model instance. + Should be mixed in with `SingleObjectBaseView`. + """ + def destroy(self, request, *args, **kwargs): + self.object = self.get_object() + self.object.delete() + return Response(status=status.HTTP_204_NO_CONTENT) |
