Django REST - Ex1 - Сериализация
Мы дали задание для Django REST - Ex1 - Serialization, задание прикреплено на скриншоте ниже -
Для той же задачи мы написали код в виде -
from django.views.decorators.csrf import csrf_exempt
from django.http import JsonResponse,HttpResponse
from rest_framework.parsers import JSONParser
from wishes.models import Wish
from wishes.serializers import WishSerializer
@csrf_exempt
def wish_list(request):
pass
"""
List all wishes or create a new wish
"""
if request.method == 'GET':
serializer = WishSerializer(Wish)
serializer.data
return JsonResponse(serializer.data)
#Write method Implementation here
if request.method == 'POST':
pass
#Write method Implementation here
@csrf_exempt
def wish_detail(request,pk):
pass
"""
Retrieve, update or delete a birthday wish.
"""
try:
wish = Wish.objects.get(pk=pk)
except Wish.DoesNotExist:
return HttpResponse(status=404)
if request.method == 'GET':
pass
#Write method Implementation here
elif request.method == 'PUT':
pass
#Write method Implementation here
elif request.method == 'DELETE':
pass
#Write method Implementation here
Наши опасения, связанные с частью кода, заключаются в следующем
serializer = WishSerializer(Wish)
serializer.data
return JsonResponse(serializer.data)
в этом serializer = WishSerializer(Wish) ошибка - Слишком много позиционных аргументов для функции callpylint(too-many-function-args)
Когда мы выполняем требуемый код, мы получаем ошибку, как показано ниже. Следовательно, нам нужен совет экспертов, что пошло не так в нашем коде-
self.assertEqual(res.status_code, row['response']['status_code']) AssertionError: 500 != 200 Stdout: {'response': {'body': [], 'headers': {'Content-Type': 'application/json'}, 'status_code': 200}, 'request': {'body': {}, 'headers': {}, 'url': '/wishes', 'method': 'GET'}}
from django.views.decorators.csrf import csrf_exempt
from django.http import JsonResponse,HttpResponse
from rest_framework.response import Response
from rest_framework.parsers import JSONParser
from wishes.models import Wish
from wishes.serializers import WishSerializer
@csrf_exempt
def wish_list(request):
"""
List all wishes or create a new wish
"""
if request.method == 'GET':
qs = Wish.objects.all()
serializer = WishSerializer(qs, many=True)
return Response(serializer.data)
if request.method == 'POST':
serializer = WishSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=201)
@csrf_exempt
def wish_detail(request,pk):
"""
Retrieve, update or delete a birthday wish.
"""
try:
wish = Wish.objects.get(pk=pk)
except Wish.DoesNotExist:
return Response(status=404)
if request.method == 'GET':
serializer = WishSerializer(wish)
return Response(serializer.data)
elif request.method == 'PUT':
serializer = WishSerializer(instance=wish, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=201)
elif request.method == 'DELETE':
wish.delete()
return Response(status=204)