Я пытаюсь опубликовать данные из реакции js на django rest api, но получаю ошибку http 400 неверного запроса («запрос не может быть обработан сервером из-за неверного синтаксиса.»)
У меня естьЯ попытался провести рефакторинг моего кода, и я не могу найти, в чем проблема. Здесь ниже мой код:
class Postjob extends React.Component{
constructor(props){
super(props);
this.submitForm=this.submitForm.bind(this);
this.postedjob=this.postedjob.bind(this);
this.state={
Company:0,
job_title:"",
job_description:"",
salary:0,
job_status:false,
}
}
submitForm= (evt) =>{
evt.preventDefault()
console.log(this.state.Company)
const form={
Company: this.state.Company,
job_title: this.state.job_title,
job_description: this.state.job_description,
salary: this.state.salary,
job_status: this.state.job_status
};
this.postedjob(form)
};
postedjob = (payload)=>{
fetch(`http://127.0.0.1:8000/job/create_job/`,
{
method: 'POST',
body: JSON.stringify(payload),
headers: {
'Content-Type': 'application/json'
}
}
).then(response => response.json())
};
render() {
return(
<div>
<h1>{this.state.currenttask}</h1>
<form onSubmit={this.submitForm}>
<input type='number' value={this.state.Company} onChange={e=>this.setState({Company:e.target.value})}/>
<input type='text' value={this.state.job_title} onChange={e=>this.setState({job_title:e.target.value})}/>
<input type='text' value={this.state.job_description} onChange={e=>this.setState({job_description:e.target.value})}/>
<input type='number' value={this.state.salary} onChange={e=>this.setState({salary:e.target.value})}/>
<button type="submit">Submit</button>
</form>
</div>
)
}
}
Django Side:
Views.py:
lass Companylist(APIView):
def get(self,request):
return Response([CompanySerializer(company).data for company in Company.objects.all()])
def post(self,request):
payload=request.data
serializer=CompanySerializer(data=payload)
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)
Serializers.py:
class CompanySerializer(serializers.ModelSerializer):
class Meta:
model=Company
fields='__all__' #to get all fields
def create(self, validated_data):
company = Company.objects.all(**validated_data)
return company
def update(self, instance, validated_data):
for k, v in validated_data.items():
setattr(instance, k, v)
instance.save()
return instance
def validate(self, attrs):
if not attrs.get('company_name') or attrs.get('company_name') < 10:
raise ValidationError("Book is too small to read")
return attrs
Я пробовал публиковать из django api, и это успешно, но когда я пытаюсь из формы реагировать js, это дает мне ошибку, и яне могу найти причину.Буду очень благодарен, если кто-то сможет найти причину ошибки.