Django rest framework登录数据库时未加密密码

Django rest framework登录数据库时未加密密码,django,rest,django-rest-framework,basic-authentication,django-authentication,Django,Rest,Django Rest Framework,Basic Authentication,Django Authentication,因此,我使用Django的RESTAPI(Django Rest framework 3.0.2)和基本身份验证来注册和验证我的移动测试应用程序的用户。问题是,我通过管理面板创建的用户的密码是加密的,但是当我使用rest框架创建用户到同一个“用户”(默认)数据库时,密码不会加密。这给我们带来了几个问题(特别是验证用户是否从api令牌身份验证获取令牌)。有什么我能做的吗?也许是背景中的什么?(我们还在服务器上运行gunicorn和ngnix)。 非常感谢 听起来您只是在使用ModelSeriali

因此,我使用Django的RESTAPI(Django Rest framework 3.0.2)和基本身份验证来注册和验证我的移动测试应用程序的用户。问题是,我通过管理面板创建的用户的密码是加密的,但是当我使用rest框架创建用户到同一个“用户”(默认)数据库时,密码不会加密。这给我们带来了几个问题(特别是验证用户是否从api令牌身份验证获取令牌)。有什么我能做的吗?也许是背景中的什么?(我们还在服务器上运行gunicorn和ngnix)。
非常感谢

听起来您只是在使用ModelSerializer和ModelViewSet。您必须重写ModelSerializer的create方法

def create(self, validated_data):
    user = User(
        email=validated_data['email'],
        username=validated_data['username']
    )
    user.set_password(validated_data['password'])
    user.save()
    return user
ModelSerializer有一个可能有用的示例。

实现这一点的简单方法

class CreateUserSerializer(serializers.ModelSerializer):
class Meta:
    model = User
    fields = ['email', 'username', 'password']
    extra_kwargs = {'password': {'write_only': True}}

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

谢谢,这个修好了!