在 django 中创建新用户不提供散列密码

Posted

技术标签:

【中文标题】在 django 中创建新用户不提供散列密码【英文标题】:create new user in django gives not hashed password 【发布时间】:2016-06-06 07:00:39 【问题描述】:

我正在尝试在 django rest 框架中使用 post 请求创建用户。

这是我的序列化代码:

class UserSerializer(serializers.ModelSerializer):
    favorites = serializers.PrimaryKeyRelatedField(many=True, queryset=Favorite.objects.all())
    class Meta:
        model = User
        fields = ('id', 'username','password','favorites')
        extra_kwargs = 
            'password': 
                'write_only': True,
            ,
            'confirm_password': 
                'write_only': True,
            ,
            'favorites':
            
                'read_only': True,
            ,
        

    def create(self, validated_data):
        return User.objects.create(**validated_data) 

对于创建方法,我也使用了这个实现:

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

在我的管理面板中,它为创建的用户显示:

Invalid password format or unknown hashing algorithm.

我应该改变什么?

【问题讨论】:

【参考方案1】:

User 的经理有一个特殊的方法 - create_user(),它可以做你需要做的事情

【讨论】:

好的,但是如果你需要创建一个网络服务来创建这样的用户呢?【参考方案2】:

这个答案解决了它: https://***.com/a/29391122/355641

我想使用get_user_model 是解决方案。

【讨论】:

以上是关于在 django 中创建新用户不提供散列密码的主要内容,如果未能解决你的问题,请参考以下文章

Django:密码格式无效或散列算法未知

如何在没有用户对象的情况下存储 Django 散列密码?

如何在 Oracle Database 11g 中创建新模式/新用户?

为啥我的新用户无法在 SQL Developer 中创建新连接?

如何只允许特定用户在 Firebase 中创建新用户?

无法编写用于在数据库中创建新用户的 GraphQL Mutation