Поле Django Rest framework обязательно ошибка


Мой models.py:

from django.db import models

# Create your models here.
class Email(models.Model):
    id = models.AutoField(primary_key=True)
    sender = models.CharField(max_length=100)
    receiver = models.CharField(max_length=100)
    message = models.TextField()

Мой serializer.py:

from django.forms import widgets
from rest_framework import serializers
from email_app.models import Email

class EmailSerializer(serializers.ModelSerializer):
    class Meta:
        model = Email
        fields = ('id', 'sender', 'receiver', 'message')

Мой views.py:

@api_view(['POST'])
def email_list(request):
    serializer = EmailSerializer(data=request.DATA)
    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)

Когда я отправляю запрос POST, как это:

 curl -X POST http://127.0.0.1:8000/email/new/ -d "{'sender': 'a@b', 'receiver':'c@d', 'message':''yolo'}"

Я получаю эту ошибку:

{"message": ["This field is required."], "sender": ["This field is required."], "receiver": ["This field is required."]}

Что я делаю не так?

1 3

1 ответ:

DRF нужен заголовок Content-Type, чтобы найти правильный синтаксический анализатор для ваших данных.

Попробуйте добавить -H "Content-Type:application/json" к вашему вызову curl.

Также обратите внимание, что одинарные кавычки (') при их использовании не являются допустимыми JSON. JSON допускает только двойные кавычки (").

Таким образом, ваш правильный curl-вызов будет

curl -X POST http://127.0.0.1:8000/email/new/ -H "Content-Type: application/json" -d '{"sender": "a@b", "receiver":"c@d", "message":"yolo"}'