我想在我的一个视图中创建一个用户并存储用户密码哈希。
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通常在序列化程序中使用,但在我的情况下,我希望在我的请求中还有额外的信息,例如令牌/消息。
这似乎没有在我的密码字段上做任何事情。 也许我必须在我的序列化器中做到这一点?如果是这样的话?
答案 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()