【问题标题】:create new user in django gives not hashed password在 django 中创建新用户不提供散列密码
【发布时间】: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.

我应该改变什么?

【问题讨论】:

    标签: python django django-rest-framework


    【解决方案1】:

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

    【讨论】:

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

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

    我想使用get_user_model 是解决方案。

    【讨论】:

      猜你喜欢
      • 2021-03-09
      • 2016-10-16
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 2017-05-10
      • 2021-03-16
      • 1970-01-01
      • 2016-06-11
      相关资源
      最近更新 更多