Столкновение с трудностями при реализации функциональности crud во фреймворке django rest
Я пытаюсь создать api, используя django rest framework, но я столкнулся с проблемой в crud функциональности, где я не могу отправить данные, поступающие из front end в базу данных, а также не могу отобразить их на api в формате json
my models.py
from django.db import models
class freelancerJob(models.Model):
Job_duration = (
('1','Less than 1 month'),
('3','1 to 3 months'),
('6','3 to 6 month'),
('12','More than 6 months')
)
Job_type=(("Individual",'Individual freelancer'),
('Team','Team')
)
title = models.CharField(max_length=250,null=False,blank=False)
description = models.CharField(max_length=2000,blank=False)
skill= models.CharField(max_length=250)
duration = models.CharField(max_length=50 ,blank=False,choices=Job_duration)
budget = models.IntegerField(blank=False)
types = models.CharField(max_length=50,blank=False,choices=Job_type)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
файл serializer.py
from rest_framework import serializers
from .models import freelancerJob
class jobPostSerializer(serializers.HyperlinkedModelSerializer):
def create(self,validated_data):
instance = self.Meta.model(**validated_data)
instance.is_valid(raise_exception=True)
instance.save()
return instance
def update(self, instance,validated_data):
for attr,value in validated_data.items():
setattr(instance,attr,value)
class Meta:
model= freelancerJob
fields =('title','description','skill','duration','budget','types')
views.py
rom django.http import JsonResponse
from . models import freelancerJob
from . serializers import jobPostSerializer
from rest_framework import viewsets
from django.views.decorators.csrf import csrf_exempt
from rest_framework.views import APIView
from django.contrib.auth import get_user_model
from rest_framework import status
from rest_framework.response import Response
from rest_framework.parsers import JSONParser
@csrf_exempt
def jobPostView(request):
if request.method == "POST":
data = JSONParser().parse(request)
serializer = jobPostSerializer(data= data)
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data,status=status.HTTP_200_OK)
else:
return JsonResponse({'status':'error','data':serializer.data}, status=status.HTTP_400_BAD_REQUEST)
elif request.method == "GET":
items = freelancerJob.objects.all()
serializer = jobPostSerializer(items, many=True)
return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK)
Я не могу понять свою ошибку, вывод просто показывает, что детали не найдены
Попробуйте использовать APIView
from rest_framework.views import APIView
class JobPostView(APIView):
def post(self, request, *args, **kwargs):
serializer = jobPostSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return JsonResponse(
serializer.data,
status=status.HTTP_200_OK
)
else:
return JsonResponse(
{'status':'error','data':serializer.data},
status=status.HTTP_400_BAD_REQUEST
)
