Untitled
unknown
plain_text
2 years ago
3.4 kB
4
Indexable
from django.shortcuts import get_object_or_404 from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework import status from posts.models import Post, Group, Comment from .serializers import PostSerializer, GroupSerializer, CommentSerializer @api_view(['GET', 'POST']) def api_posts(request): if request.method == 'POST': serializer = PostSerializer(data=request.data) if serializer.is_valid(): serializer.save(author=request.user) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) posts = Post.objects.all() serializer = PostSerializer(posts, many=True) return Response(serializer.data) @api_view(['GET', 'PUT', 'PATCH', 'DELETE']) def api_posts_detail(request, pk): post = get_object_or_404(Post, id=pk) if request.method == 'GET': serializer = PostSerializer(post) return Response(serializer.data, status=status.HTTP_200_OK) if request.user != post.author: return Response(status=status.HTTP_403_FORBIDDEN) if request.method == 'PUT' or request.method == 'PATCH': serializer = PostSerializer(post, data=request.data, partial=True) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': post.delete() return Response(status=status.HTTP_204_NO_CONTENT) @api_view(['GET']) def api_group(request): if request.method == 'GET': groups = Group.objects.all() serializer = GroupSerializer(groups, many=True) return Response(serializer.data, status=status.HTTP_200_OK) return Response(status=status.HTTP_403_FORBIDDEN) @api_view(['GET']) def api_group_detail(request, pk): if request.method == 'GET': group = get_object_or_404(Group, pk=pk) serializer = GroupSerializer(group) return Response(serializer.data) return Response(status=status.HTTP_400_BAD_REQUEST) @api_view(['GET', 'POST']) def api_comment(request, pk): if request.method == 'GET': comments = Comment.objects.all() serializer = CommentSerializer(comments, many=True) return Response(serializer.data) elif request.method == 'POST': post = get_object_or_404(Post, pk=pk) serializer = CommentSerializer(data=request.data) if serializer.is_valid(): serializer.save(author=request.user, post=post) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @api_view(['GET', 'PUT', 'PATCH', 'DELETE']) def api_comment_detail(request, pk): comment = get_object_or_404(Comment, pk=pk) if request.method == 'GET': serializer = CommentSerializer(comment) return Response(serializer.data, status=status.HTTP_200_OK) elif request.method == 'PUT' or request.method == 'PATCH': serializer = CommentSerializer(comment, data=request.data, partial=True) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Editor is loading...