在GenericViewSet Django中设置密码字段

时间:2018-04-11 01:42:09

标签: python django django-rest-framework

我想在我的一个视图中创建一个用户并存储用户密码哈希。

class DetailedUserViewSet(CreateModelMixin, GenericViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = (AllowAny,)
    def __init__(self, *args, **kwargs):
        super(DetailedUserViewSet, self).__init__(*args, **kwargs)

    def create(self, request, *args, **kwargs):
        response_data = {'message' : 'Invalid data'}
        validated_data = self.request.data
        user = User(username=validated_data['email'], is_active=True, email=validated_data['email'])
        user.set_password = validated_data['password']
        user.save()
        profile = UserProfile(mobile=validated_data['mobile'],user=user)
        profile.save()
        token = Token.objects.get(user=user)
        response_data['message'] = 'OK'
        response_data['token'] = token.key
        return Response(response_data, status=status.HTTP_201_CREATED)

user.set_password通常在序列化程序中使用,但在我的情况下,我希望在我的请求中还有额外的信息,例如令牌/消息。

这似乎没有在我的密码字段上做任何事情。 也许我必须在我的序列化器中做到这一点?如果是这样的话?

1 个答案:

答案 0 :(得分:2)

set_password是方法,您可以这样使用它:

user = User(username=validated_data['email'], is_active=True, email=validated_data['email'])
user.set_password(validated_data['password'])
user.save()