mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-22 17:47:04 +03:00
Rename generic views
This commit is contained in:
parent
d1b99f350a
commit
c30e0795be
|
@ -136,12 +136,12 @@ Using the mixin classes we've rewritten the views to use slightly less code than
|
|||
from rest_framework import generics
|
||||
|
||||
|
||||
class CommentRoot(generics.RootAPIView):
|
||||
class CommentRoot(generics.ListCreateAPIView):
|
||||
model = Comment
|
||||
serializer_class = CommentSerializer
|
||||
|
||||
|
||||
class CommentInstance(generics.InstanceAPIView):
|
||||
class CommentInstance(generics.RetrieveUpdateDestroyAPIView):
|
||||
model = Comment
|
||||
serializer_class = CommentSerializer
|
||||
|
||||
|
|
|
@ -106,10 +106,10 @@ class ListAPIView(mixins.ListModelMixin,
|
|||
return self.metadata(request, *args, **kwargs)
|
||||
|
||||
|
||||
class RootAPIView(mixins.ListModelMixin,
|
||||
mixins.CreateModelMixin,
|
||||
mixins.MetadataMixin,
|
||||
MultipleObjectBaseView):
|
||||
class ListCreateAPIView(mixins.ListModelMixin,
|
||||
mixins.CreateModelMixin,
|
||||
mixins.MetadataMixin,
|
||||
MultipleObjectBaseView):
|
||||
"""
|
||||
Concrete view for listing a queryset or creating a model instance.
|
||||
"""
|
||||
|
@ -123,9 +123,9 @@ class RootAPIView(mixins.ListModelMixin,
|
|||
return self.metadata(request, *args, **kwargs)
|
||||
|
||||
|
||||
class DetailAPIView(mixins.RetrieveModelMixin,
|
||||
mixins.MetadataMixin,
|
||||
SingleObjectBaseView):
|
||||
class RetrieveAPIView(mixins.RetrieveModelMixin,
|
||||
mixins.MetadataMixin,
|
||||
SingleObjectBaseView):
|
||||
"""
|
||||
Concrete view for retrieving a model instance.
|
||||
"""
|
||||
|
@ -136,11 +136,11 @@ class DetailAPIView(mixins.RetrieveModelMixin,
|
|||
return self.metadata(request, *args, **kwargs)
|
||||
|
||||
|
||||
class InstanceAPIView(mixins.RetrieveModelMixin,
|
||||
mixins.UpdateModelMixin,
|
||||
mixins.DestroyModelMixin,
|
||||
mixins.MetadataMixin,
|
||||
SingleObjectBaseView):
|
||||
class RetrieveUpdateDestroyAPIView(mixins.RetrieveModelMixin,
|
||||
mixins.UpdateModelMixin,
|
||||
mixins.DestroyModelMixin,
|
||||
mixins.MetadataMixin,
|
||||
SingleObjectBaseView):
|
||||
"""
|
||||
Concrete view for retrieving, updating or deleting a model instance.
|
||||
"""
|
||||
|
|
|
@ -239,27 +239,29 @@ class DocumentingHTMLRenderer(BaseRenderer):
|
|||
|
||||
# We need to map our Fields to Django's Fields.
|
||||
field_mapping = dict([
|
||||
[serializers.FloatField.__name__, forms.FloatField],
|
||||
[serializers.IntegerField.__name__, forms.IntegerField],
|
||||
[serializers.DateTimeField.__name__, forms.DateTimeField],
|
||||
[serializers.DateField.__name__, forms.DateField],
|
||||
[serializers.EmailField.__name__, forms.EmailField],
|
||||
[serializers.CharField.__name__, forms.CharField],
|
||||
[serializers.BooleanField.__name__, forms.BooleanField]
|
||||
[serializers.FloatField.__name__, forms.FloatField],
|
||||
[serializers.IntegerField.__name__, forms.IntegerField],
|
||||
[serializers.DateTimeField.__name__, forms.DateTimeField],
|
||||
[serializers.DateField.__name__, forms.DateField],
|
||||
[serializers.EmailField.__name__, forms.EmailField],
|
||||
[serializers.CharField.__name__, forms.CharField],
|
||||
[serializers.BooleanField.__name__, forms.BooleanField]
|
||||
])
|
||||
|
||||
# Creating an on the fly form see: http://stackoverflow.com/questions/3915024/dynamically-creating-classes-python
|
||||
fields = {}
|
||||
object, data = None, None
|
||||
obj, data = None, None
|
||||
if getattr(view, 'object', None):
|
||||
object = view.object
|
||||
serializer = view.get_serializer(instance=object)
|
||||
obj = view.object
|
||||
|
||||
serializer = view.get_serializer(instance=obj)
|
||||
for k, v in serializer.fields.items():
|
||||
if v.readonly:
|
||||
continue
|
||||
fields[k] = field_mapping[v.__class__.__name__]()
|
||||
|
||||
OnTheFlyForm = type("OnTheFlyForm", (forms.Form,), fields)
|
||||
if object and not view.request.method == 'DELETE': # Don't fill in the form when the object is deleted
|
||||
if obj and not view.request.method == 'DELETE': # Don't fill in the form when the object is deleted
|
||||
data = serializer.data
|
||||
form_instance = OnTheFlyForm(data)
|
||||
return form_instance
|
||||
|
|
|
@ -62,8 +62,8 @@ class Resource(ResourceMixin, views.APIView):
|
|||
|
||||
|
||||
class ModelResource(ResourceMixin, views.APIView):
|
||||
root_class = generics.RootAPIView
|
||||
detail_class = generics.InstanceAPIView
|
||||
root_class = generics.ListCreateAPIView
|
||||
detail_class = generics.RetrieveUpdateDestroyAPIView
|
||||
|
||||
def root_view(self):
|
||||
return wrapped(self, self.root_class())
|
||||
|
|
|
@ -322,7 +322,7 @@ class ModelSerializer(RelatedField, Serializer):
|
|||
else:
|
||||
field = self.get_field(model_field)
|
||||
|
||||
if field is not None:
|
||||
if field:
|
||||
field.initialize(parent=self, model_field=model_field)
|
||||
ret[model_field.name] = field
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ from rest_framework.tests.models import BasicModel
|
|||
factory = RequestFactory()
|
||||
|
||||
|
||||
class RootView(generics.RootAPIView):
|
||||
class RootView(generics.ListCreateAPIView):
|
||||
"""
|
||||
Example description for OPTIONS.
|
||||
"""
|
||||
|
@ -16,7 +16,7 @@ class RootView(generics.RootAPIView):
|
|||
paginate_by = None
|
||||
|
||||
|
||||
class InstanceView(generics.InstanceAPIView):
|
||||
class InstanceView(generics.RetrieveUpdateDestroyAPIView):
|
||||
"""
|
||||
Example description for OPTIONS.
|
||||
"""
|
||||
|
@ -40,7 +40,7 @@ class TestRootView(TestCase):
|
|||
|
||||
def test_get_root_view(self):
|
||||
"""
|
||||
GET requests to RootAPIView should return list of objects.
|
||||
GET requests to ListCreateAPIView should return list of objects.
|
||||
"""
|
||||
request = factory.get('/')
|
||||
response = self.view(request).render()
|
||||
|
@ -49,7 +49,7 @@ class TestRootView(TestCase):
|
|||
|
||||
def test_post_root_view(self):
|
||||
"""
|
||||
POST requests to RootAPIView should create a new object.
|
||||
POST requests to ListCreateAPIView should create a new object.
|
||||
"""
|
||||
content = {'text': 'foobar'}
|
||||
request = factory.post('/', json.dumps(content),
|
||||
|
@ -62,7 +62,7 @@ class TestRootView(TestCase):
|
|||
|
||||
def test_put_root_view(self):
|
||||
"""
|
||||
PUT requests to RootAPIView should not be allowed
|
||||
PUT requests to ListCreateAPIView should not be allowed
|
||||
"""
|
||||
content = {'text': 'foobar'}
|
||||
request = factory.put('/', json.dumps(content),
|
||||
|
@ -73,7 +73,7 @@ class TestRootView(TestCase):
|
|||
|
||||
def test_delete_root_view(self):
|
||||
"""
|
||||
DELETE requests to RootAPIView should not be allowed
|
||||
DELETE requests to ListCreateAPIView should not be allowed
|
||||
"""
|
||||
request = factory.delete('/')
|
||||
response = self.view(request).render()
|
||||
|
@ -82,7 +82,7 @@ class TestRootView(TestCase):
|
|||
|
||||
def test_options_root_view(self):
|
||||
"""
|
||||
OPTIONS requests to RootAPIView should return metadata
|
||||
OPTIONS requests to ListCreateAPIView should return metadata
|
||||
"""
|
||||
request = factory.options('/')
|
||||
response = self.view(request).render()
|
||||
|
@ -133,7 +133,7 @@ class TestInstanceView(TestCase):
|
|||
|
||||
def test_get_instance_view(self):
|
||||
"""
|
||||
GET requests to InstanceAPIView should return a single object.
|
||||
GET requests to RetrieveUpdateDestroyAPIView should return a single object.
|
||||
"""
|
||||
request = factory.get('/1')
|
||||
response = self.view(request, pk=1).render()
|
||||
|
@ -142,7 +142,7 @@ class TestInstanceView(TestCase):
|
|||
|
||||
def test_post_instance_view(self):
|
||||
"""
|
||||
POST requests to InstanceAPIView should not be allowed
|
||||
POST requests to RetrieveUpdateDestroyAPIView should not be allowed
|
||||
"""
|
||||
content = {'text': 'foobar'}
|
||||
request = factory.post('/', json.dumps(content),
|
||||
|
@ -153,7 +153,7 @@ class TestInstanceView(TestCase):
|
|||
|
||||
def test_put_instance_view(self):
|
||||
"""
|
||||
PUT requests to InstanceAPIView should update an object.
|
||||
PUT requests to RetrieveUpdateDestroyAPIView should update an object.
|
||||
"""
|
||||
content = {'text': 'foobar'}
|
||||
request = factory.put('/1', json.dumps(content),
|
||||
|
@ -166,7 +166,7 @@ class TestInstanceView(TestCase):
|
|||
|
||||
def test_delete_instance_view(self):
|
||||
"""
|
||||
DELETE requests to InstanceAPIView should delete an object.
|
||||
DELETE requests to RetrieveUpdateDestroyAPIView should delete an object.
|
||||
"""
|
||||
request = factory.delete('/1')
|
||||
response = self.view(request, pk=1).render()
|
||||
|
@ -177,7 +177,7 @@ class TestInstanceView(TestCase):
|
|||
|
||||
def test_options_instance_view(self):
|
||||
"""
|
||||
OPTIONS requests to InstanceAPIView should return metadata
|
||||
OPTIONS requests to RetrieveUpdateDestroyAPIView should return metadata
|
||||
"""
|
||||
request = factory.options('/')
|
||||
response = self.view(request).render()
|
||||
|
|
|
@ -7,7 +7,7 @@ from rest_framework.tests.models import BasicModel
|
|||
factory = RequestFactory()
|
||||
|
||||
|
||||
class RootView(generics.RootAPIView):
|
||||
class RootView(generics.ListCreateAPIView):
|
||||
"""
|
||||
Example description for OPTIONS.
|
||||
"""
|
||||
|
@ -35,7 +35,7 @@ class IntegrationTestPagination(TestCase):
|
|||
|
||||
def test_get_paginated_root_view(self):
|
||||
"""
|
||||
GET requests to paginated RootAPIView should return paginated results.
|
||||
GET requests to paginated ListCreateAPIView should return paginated results.
|
||||
"""
|
||||
request = factory.get('/')
|
||||
response = self.view(request).render()
|
||||
|
|
Loading…
Reference in New Issue
Block a user