integrate django password validators with django rest framework validate_password

前端 未结 4 1900
误落风尘
误落风尘 2020-12-08 15:35

I\'m trying to integrate django validators 1.9 with django rest framework serializers. But the serialized \'user\' (of django rest framework) is not compatible with the djan

4条回答
  •  隐瞒了意图╮
    2020-12-08 16:01

    Use Serializers! Have a validate_fieldname method!

    class UserSerializer(serializers.ModelSerializer):
    
        class Meta:
            model = User
            fields = (
                'id', 'username', 'password', 'first_name', 'last_name', 'email'
            )
            extra_kwargs = {
                'password': {'write_only': True},
                'username': {'read_only': True}
            }
    
        def validate_password(self, value):
            try:
                validate_password(value)
            except ValidationError as exc:
                raise serializers.ValidationError(str(exc))
            return value
    
        def create(self, validated_data):
            user = super().create(validated_data)
            user.set_password(validated_data['password'])
    
            user.is_active = False
            user.save()
            return user
    
        def update(self, instance, validated_data):
            user = super().update(instance, validated_data)
            if 'password' in validated_data:
                user.set_password(validated_data['password'])
                user.save()
            return user
    

提交回复
热议问题