Django Rest 注册 API 错误:此字段为必填字段



你好,我想为我的 django rest api 创建一个简单的注册 API 但是当我想用curl测试注册时,我总是得到这个错误: {"用户名":["此字段为必填项。"],"密码":["此字段为必填项。"]}

这是我的卷曲cmd:

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

views.py 注册接口

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

或者参考链接Django Rest Framework 注册

最新更新