Django Rest api 不保存密码

问题描述 投票:0回答:1

我想制作一个用户注册表。一切正常,用户已保存,但其密码未存储。当我在管理中看到用户页面时,它位于密码字段中 -> “无效的密码格式或未知的哈希算法。”。我使用默认用户模式。

这是我的代码->

序列化器.py

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

        def create(self, validated_data):
            user = User(
                username=validated_data['username']
            )
            user.set_password(validated_data['password'])
            user.save()
            return user

views.py

class CreateUser(generics.CreateAPIView):
    permission_classes=[AllowAny]
    serializer_class=RegisterSerializer
    

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.save()
        token, _ = Token.objects.get_or_create(user=user)

        return Response({
        "user": RegisterSerializer(user, context=self.get_serializer_context()).data, 
        "token": token.key
        })
django api serialization django-rest-framework model
1个回答
0
投票

您已经在 Meta 类中编写了 create 方法。但它会像这样在元类之外。

类 RegisterSerializer(serializers.ModelSerializer): 类元: 模型=用户 fields = ('id', '用户名', '电子邮件', '密码', ) extra_kwargs = {'密码':{'write_only':True},}

def create(self, validated_data):
    user = User(
        username=validated_data['username']
    )
    user.set_password(validated_data['password'])
    user.save()
    return user
© www.soinside.com 2019 - 2024. All rights reserved.