Похоже, что React требует, чтобы поле Django Model, связанное с переменной в React, было объявлено как POST
Я довольно новичок в программировании, поэтому, скорее всего, я упускаю что-то довольно базовое, но я потерял пару дней на эту проблему и не могу найти решение. Я следую учебнику от Великого Адиба (Исходный код: https://github.com/GaziAdib/django_react_fullstack) и пытаюсь связать мою React форму с моим Django бэкендом. Я использую axios для взаимодействия с API и протестировал свой API с помощью Postman и Django API UI, и кажется, что он работает просто отлично, я даже могу получать данные из моего Django бэкенда без проблем, но когда я пытаюсь отправить данные из моей формы, я сталкиваюсь с проблемами, я продолжаю получать RefrenceErrors на моих полях Django, которые связаны с соответствующими переменными в моем коде React, что они не определены, вот как у меня настроен код и ошибка, которую я получаю:
import React, { useState } from 'react';
import { useHistory } from 'react-router';
import axios from 'axios';
[enter image description here][1]const Form = () => {
let history = useHistory();
const [firstName, setFirstName] = useState("")
const [lastInitial, setLastInitial] = useState("")
const [dateVisited, setDateVisited] = useState("")
const [foodRating, setFoodRating] = useState("")
const [serviceRating, setServiceRating] = useState("")
const [message, setMessage] = useState("")
const addReviewForm = async () => {
let formField = new FormData
formField.append('firstName', first_name)
formField.append('lastInitial', first_initial)
formField.append('dateVisited', date_visited)
formField.append('foodRating', food_rating)
formField.append('serviceRating', service_rating)
formField.append('message', message)
await axios({
method: 'post',
url: 'http://127.0.0.1:8000/api/reviewform/',
data: formField,
}).then((response) => {
console.log(response.data);
history.push('/')
})
}
Насколько я понимаю, поля Django не нужно объявлять, так как переменные формы - это то, что будет размещено в этих переменных, и из того, что я вижу в исходном коде учебника, они не объявлены никак иначе, чем в моем коде.
Буду признателен за любую помощь в этом вопросе, пожалуйста, дайте мне знать, если необходима любая другая информация.
Код из models.py:
class ContactForm(models.Model):
contact_form_id = models.AutoField(primary_key=True, serialize=True)
first_name = models.CharField(max_length=25, null=False, blank=False)
last_name = models.CharField(max_length=25, null=False, blank=False)
phone_number = models.CharField(max_length=25, null=False, blank=False)
message = models.TextField(max_length=1500, null=False, blank=False)
def __str__(self):
return self.email
Код из serializers.py:
class ContactFormSerializer(serializers.ModelSerializer):
class Meta:
model = ContactForm
fields = ('contact_form_id','first_name', 'last_name', 'phone_number', 'email', 'contact_type', 'message')
Код из файла views.py:
class ContactFormView(viewsets.ModelViewSet):
serializer_class = ContactFormSerializer
queryset = ContactForm.objects.all()