Reputation: 162
I have Post django model:
class Post(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
Serializers:
class PostListSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ('id', 'title')
class PostDetailSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = '__all__'
Views:
class PostListView(generics.ListAPIView):
queryset = Post.objects.all()
serializer = PostListSerializer
class CreatePostView(generics.CreateAPIView):
queryset = Post.objects.all()
serializer = PostDetailSerializer
permission_classes = (permissions.IsAuthenticated,)
Endpoint is /api/posts/
How to dispatch request to PostListView if HTTP Method is GET and to CreatePostView if HTTP Method is POST?
Upvotes: 0
Views: 109
Reputation: 43300
You don't, instead of writing permission_classes
and serializer
use the get_serializer_class
and get_permissions
methods
def get_serializer_class(self):
if self.request.method == 'GET':
return PostListSerializer
return PostDetailSerializer
def get_permissions(self):
if self.request.method == 'GET':
return [IsAuthenticated()]
return []
alternatively, consider if you're expecting too much for the single endpoint
Upvotes: 1