Django Rest Framework: Не отправляется электронное письмо из формы react Ошибка 400

Я пытаюсь отправить форму, используя конечную точку API, указанную ниже. Проблема в том, что я получаю ошибку 400, когда я использую свое приложение на основе реакта. Если я использую страницу с конечной точкой api, она работает. Я проверил полезную нагрузку, и единственное различие, похоже, заключается в том, что я не отправляю токен csrf в своем приложении react. До сих пор в этом не было необходимости, когда я использовал сериализаторы моделей. Я полагаю, что это что-то внутри сериализатора, но не могу определить, что именно. Кто-нибудь знает, что может быть причиной ошибки 400?

sendEmail.js

   const testmessage = "This is a test message"
    const testemail = "dsfds@dsfg.de"
    const clientnametest = "name"
    function sendProposal(values) {
        console.log("start sending proposal...");
        setSendProp(true)

        const data = new FormData()
        data.append("Clientname", clientnametest || "");
        data.append("Sender", testemail || "");
        data.append("Message", testmessage || "");

        axios.post(API.email.proposal, data, {

            headers: {
                "Authorization": `Bearer ${accessToken}`,
                'Accept' : 'application/json',
            },
            withCredentials: true,
        })
            .then(res => {


            })
            .finally(() => {                
                setSendProp(false)
            })

        success()
    }

views.py

class ProposalEmailView(APIView):
    
    permission_classes = [IsAuthenticated]
    serializer_class = ProposalEmailSerializer
    
    def post(self, request, *args, **kwargs):
        serializer_class = ProposalEmailSerializer(data=request.data)
        if serializer_class.is_valid():
             data = serializer_class.validated_data
             ClientName = data.get('ClientName')
             Sender = data.get('Sender')
             Message = data.get('Message')
             send_mail('Contact Form mail from ' + ClientName,
                       Message, Sender, ['test@test.test'],)
            
             return Response({"success": "Sent"}, status=status.HTTP_200_OK)
        return Response({"error": "Failed"}, status=status.HTTP_400_BAD_REQUEST)

serializers.py

class ProposalEmailSerializer(serializers.Serializer):
    ClientName = serializers.CharField()
    Sender = serializers.EmailField()
    Message = serializers.CharField()

Это помогло мне решить проблему. Использование общих представлений было моей проблемой:

views.py

@api_view(['POST',])
def proposal(request):
    if request.method == "POST":
        serializer = ProposalEmailSerializer(data=request.data)
        if serializer.is_valid():
            ClientName = request.POST['ClientName']
            Sender = request.POST['Sender']
            Message = request.POST['Message']

            # send mail
            send_mail(
                'Contact Form mail from ' + ClientName,
                Message,
                'test@test.domain',
                [Sender],
            )
            # serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Вернуться на верх