Python Django Rest framework字段是必需的错误

Python Django Rest framework字段是必需的错误,python,django,django-rest-framework,Python,Django,Django Rest Framework,My 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 =

My 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()
My 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')
My 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."]}

我做错了什么?

DRF需要
内容类型
头来为您的数据找到正确的解析器

尝试将
-H“Content-Type:application/json”
添加到curl调用中

还要注意,单引号(
)在使用时不是有效的JSON。JSON只允许双引号(

所以你正确的旋度应该是

curl-X POSThttp://127.0.0.1:8000/email/new/ -H“内容类型:应用程序/json”-d'{“发件人”:”a@b“接收者”:c@d“,”消息“:“yolo”}”