django rest registration api error: this field is required

django rest registration api error: this field is required

你好,我想为我的 django rest api 创建一个简单的注册 api 但是当我想用 curl 测试注册时,我总是得到这个错误: {"username":["This field is required."],"password":["This field is required."]}

这是我的 curl 命令:

curl --request POST --url http://localhost:8000/auth/register/ --header 'content-type: application/json' --data '{"username": "user1","password": "hunter2"}'

views.py RegistrationApi

class RegistrationAPI(generics.GenericAPIView):
    serializer_class = CreateUserSerializer

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.save()
        return Response({
            "user": UserSerializer(user, context=self.get_serializer_context()).data,
            "token": AuthToken.objects.create(user)
        })

serializers.py

class CreateUserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'password')
        extra_kwargs = {'password': {'write_only': True}}

    def create(self, validated_data):
        user = User.objects.create_user(validated_data['username'],
                                        None,
                                        validated_data['password'])
        return user


class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username')

也许序列化程序有问题?我已经试过了所以弄清楚问题出在哪里但是我找不到它

试试这个:

class CreateUserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'email', 'password')
        extra_kwargs = {'password' : {'write_only': True}}
    def create(self, validated_data):
        user = User.objects.create_user(**validated_data)
        return user

或参考link