aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/generics.py
diff options
context:
space:
mode:
authorTom Christie2012-10-25 06:31:25 -0700
committerTom Christie2012-10-25 06:31:25 -0700
commite987737621723d89022b9e68e6c9b5f13d992605 (patch)
treef08020c5d1689c65d6bf3159837fd715139c8a84 /rest_framework/generics.py
parent8c360770c18ac38a2f4da81a3553fb40592558c4 (diff)
parent41d27b1a307132fea42fb104a8d7d266ea9e90d1 (diff)
downloaddjango-rest-framework-e987737621723d89022b9e68e6c9b5f13d992605.tar.bz2
Merge pull request #320 from j4mie/split-generic-views
Rename generic base classes, and add CreateAPIView, DeleteAPIView, UpdateAPIView.
Diffstat (limited to 'rest_framework/generics.py')
-rw-r--r--rest_framework/generics.py65
1 files changed, 48 insertions, 17 deletions
diff --git a/rest_framework/generics.py b/rest_framework/generics.py
index 18c1033d..81014026 100644
--- a/rest_framework/generics.py
+++ b/rest_framework/generics.py
@@ -10,7 +10,7 @@ from django.views.generic.list import MultipleObjectMixin
### Base classes for the generic views ###
-class BaseView(views.APIView):
+class GenericAPIView(views.APIView):
"""
Base class for all other generic views.
"""
@@ -51,7 +51,7 @@ class BaseView(views.APIView):
return serializer_class(data, instance=instance, context=context)
-class MultipleObjectBaseView(MultipleObjectMixin, BaseView):
+class MultipleObjectAPIView(MultipleObjectMixin, GenericAPIView):
"""
Base class for generic views onto a queryset.
"""
@@ -75,7 +75,7 @@ class MultipleObjectBaseView(MultipleObjectMixin, BaseView):
return pagination_serializer_class(instance=page, context=context)
-class SingleObjectBaseView(SingleObjectMixin, BaseView):
+class SingleObjectAPIView(SingleObjectMixin, GenericAPIView):
"""
Base class for generic views onto a model instance.
"""
@@ -86,7 +86,7 @@ class SingleObjectBaseView(SingleObjectMixin, BaseView):
"""
Override default to add support for object-level permissions.
"""
- obj = super(SingleObjectBaseView, self).get_object()
+ obj = super(SingleObjectAPIView, self).get_object()
if not self.has_permission(self.request, obj):
self.permission_denied(self.request)
return obj
@@ -95,8 +95,19 @@ class SingleObjectBaseView(SingleObjectMixin, BaseView):
### Concrete view classes that provide method handlers ###
### by composing the mixin classes with a base view. ###
+
+class CreateAPIView(mixins.CreateModelMixin,
+ GenericAPIView):
+
+ """
+ Concrete view for creating a model instance.
+ """
+ def post(self, request, *args, **kwargs):
+ return self.create(request, *args, **kwargs)
+
+
class ListAPIView(mixins.ListModelMixin,
- MultipleObjectBaseView):
+ MultipleObjectAPIView):
"""
Concrete view for listing a queryset.
"""
@@ -104,9 +115,38 @@ class ListAPIView(mixins.ListModelMixin,
return self.list(request, *args, **kwargs)
+class RetrieveAPIView(mixins.RetrieveModelMixin,
+ SingleObjectAPIView):
+ """
+ Concrete view for retrieving a model instance.
+ """
+ def get(self, request, *args, **kwargs):
+ return self.retrieve(request, *args, **kwargs)
+
+
+class DestroyAPIView(mixins.DestroyModelMixin,
+ SingleObjectAPIView):
+
+ """
+ Concrete view for deleting a model instance.
+ """
+ def delete(self, request, *args, **kwargs):
+ return self.destroy(request, *args, **kwargs)
+
+
+class UpdateAPIView(mixins.UpdateModelMixin,
+ SingleObjectAPIView):
+
+ """
+ Concrete view for updating a model instance.
+ """
+ def put(self, request, *args, **kwargs):
+ return self.update(request, *args, **kwargs)
+
+
class ListCreateAPIView(mixins.ListModelMixin,
mixins.CreateModelMixin,
- MultipleObjectBaseView):
+ MultipleObjectAPIView):
"""
Concrete view for listing a queryset or creating a model instance.
"""
@@ -117,18 +157,9 @@ class ListCreateAPIView(mixins.ListModelMixin,
return self.create(request, *args, **kwargs)
-class RetrieveAPIView(mixins.RetrieveModelMixin,
- SingleObjectBaseView):
- """
- Concrete view for retrieving a model instance.
- """
- def get(self, request, *args, **kwargs):
- return self.retrieve(request, *args, **kwargs)
-
-
class RetrieveDestroyAPIView(mixins.RetrieveModelMixin,
mixins.DestroyModelMixin,
- SingleObjectBaseView):
+ SingleObjectAPIView):
"""
Concrete view for retrieving or deleting a model instance.
"""
@@ -142,7 +173,7 @@ class RetrieveDestroyAPIView(mixins.RetrieveModelMixin,
class RetrieveUpdateDestroyAPIView(mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
- SingleObjectBaseView):
+ SingleObjectAPIView):
"""
Concrete view for retrieving, updating or deleting a model instance.
"""