我想制作一个用户注册表。一切正常,用户已保存,但其密码未存储。当我在管理中看到用户页面时,它位于密码字段中 -> “无效的密码格式或未知的哈希算法。”。我使用默认用户模式。
这是我的代码->
序列化器.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
})
您已经在 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