0

我创建了用于在 Django 中注册用户的序列化程序djangorestframework。我也django-rest-knox用于令牌身份验证。问题是创建用户时密码没有在数据库中散列。下面是序列化器的代码:

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.objects.create_user(
            #     validated_data['username'], validated_data['email'], validated_data['password'])
            user = User(
                username=validated_data['username'], email=validated_data['email'])
            user.set_password(validated_data['password'])
            user.save()
            return user

请注意,我在上面的代码中尝试了创建用户的注释和未注释方法。在这两种情况下,密码都在数据库中保存为原始密码。以下是settings.py与实现 knox 令牌认证相关的部分:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': ('knox.auth.TokenAuthentication',)
}

有什么建议为什么密码没有被散列?

4

0 回答 0