DjangoRestFramework - 视图能够创建一个用户对象,而无需对必填字段进行任何输入

DjangoRestFramework - View is able to create a user object without any input for mandatory fields

我正在使用 Django 1.8 和 Python 3.4.0。我正在使用 DjangoRestFramework。我想创建一个用户对象。根据

django/contrib/auth/models.py

它说

class User(AbstractUser):
    """
    Users within the Django authentication system are represented by this model.
    Username, password and email are required. Other fields are optional.
    """

现在在我的 serializers.py 文件中,我有:

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('username', 'password')

在我的 views.py 文件中,我有:

@api_view(['GET', 'POST'])
def user_list(request):
    """
    List all users, or create a new user.
    """
    if request.method == 'POST':
        serializer = UserSerializer(data=request.DATA)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

在我的 urls.py 我有:

url(r'^users$', 'user_list', name='user_list'),

我运行服务器然后打开终端

curl -X POST localhost:8000/users/ -d "username=firstUser&password=firstPassword"

返回201 created状态码,对象创建成功。由于 "class User" 提到电子邮件字段是必填的,它不应该返回 400 错误请求状态代码吗?

Since the "class User" mentioned that the email field is mandatory

什么电子邮件字段?

你只告诉 Django REST 框架有一个 usernamepassword 字段,所以这就是它所期望和验证的。如果您希望 email 字段是必需的,则必须将其包含在序列化程序的 Meta.fields 中。

旁注:email isn't actually a required field.