123
123unknown
python
2 years ago
3.8 kB
6
Indexable
# импортируйте в код всё необходимое from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework import status from .models import Post from .serializers import PostSerializer @api_view(['GET', 'POST']) def api_posts(request): if request.method == 'POST': serializer = PostSerializer(data=request.data) if serializer.is_valid(): serializer.save() 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 = Post.objects.get(id=pk) 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, status=status.HTTP_200_OK) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': post.delete() return Response(status=status.HTTP_200_OK) serializer = PostSerializer(post, data=request.data) return Response(serializer.data, status=status.HTTP_200_OK) _________________________________ [20/Oct/2022 12:47:36] "POST /api/v1/posts/ HTTP/1.1" 201 108 Internal Server Error: /api/v1/posts/1/ Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner response = get_response(request) File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response response = self.process_exception_by_middleware(e, request) File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/local/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view return view_func(*args, **kwargs) File "/usr/local/lib/python3.7/site-packages/django/views/generic/base.py", line 71, in view return self.dispatch(request, *args, **kwargs) File "/usr/local/lib/python3.7/site-packages/rest_framework/views.py", line 505, in dispatch response = self.handle_exception(exc) File "/usr/local/lib/python3.7/site-packages/rest_framework/views.py", line 465, in handle_exception self.raise_uncaught_exception(exc) File "/usr/local/lib/python3.7/site-packages/rest_framework/views.py", line 476, in raise_uncaught_exception raise exc File "/usr/local/lib/python3.7/site-packages/rest_framework/views.py", line 502, in dispatch response = handler(request, *args, **kwargs) File "/usr/local/lib/python3.7/site-packages/rest_framework/decorators.py", line 50, in handler return func(*args, **kwargs) File "/app/posts/views.py", line 35, in api_posts_detail return Response(serializer.data, status=status.HTTP_200_OK) File "/usr/local/lib/python3.7/site-packages/rest_framework/serializers.py", line 562, in data ret = super().data File "/usr/local/lib/python3.7/site-packages/rest_framework/serializers.py", line 256, in data raise AssertionError(msg) AssertionError: When a serializer is passed a `data` keyword argument you must call `.is_valid()` before attempting to access the serialized `.data` representation. You should either call `.is_valid()` first, or access `.initial_data` instead. [20/Oct/2022 12:47:36] "GET /api/v1/posts/1/ HTTP/1.1" 500 13712
Editor is loading...