Django Rest-创建用户密码哈希
我正在尝试散列密码,一旦创建了用户,我就使用Django Rest-创建用户密码哈希,django,django-rest-framework,Django,Django Rest Framework,我正在尝试散列密码,一旦创建了用户,我就使用Django Rest。然而,我在尝试创建它时遇到了一个错误 { "non_field_errors": [ "Invalid data. Expected a dictionary, but got str." ] } My UserSerializer My ModelViewset 提前感谢…啊,啊,啊,我找到了我的答案 添加您的UserSerializer类以及您在POS
Django Rest
。然而,我在尝试创建它时遇到了一个错误
{
"non_field_errors": [
"Invalid data. Expected a dictionary, but got str."
]
}
My UserSerializer
My ModelViewset
提前感谢…啊,啊,啊,我找到了我的答案
添加您的
UserSerializer
类以及您在POST请求中使用的有效负载。另外,为什么需要在此处散列密码?我看不到任何用户创建操作在您给定的code@ArakkalAbu我更新了我的问题,请检查一下。@ArakkalAbu我的密码不是散列的,当创建新用户时。因此,我想重写
myUserViewSet
重写序列化程序类的create()
方法,如果使用更多的DRF方法
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['username', 'first_name', 'last_name', 'email', 'active',
'admin', 'date_joined', 'password', 'partner']
class UserViewset(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
filter_backends = (filters.DjangoFilterBackend,)
def create(self, request, *args, **kwargs):
user = User.objects.all()
serializer = UserSerializer(
user, make_password(request.data['password']))
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
# return HttpResponse(user)
class UserViewset(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
filter_backends = (filters.DjangoFilterBackend,)
def perform_create(self, serializer):
# Hash password but passwords are not required
if ('password' in self.request.data):
password = make_password(self.request.data['password'])
serializer.save(password=password)
else:
serializer.save()
def perform_update(self, serializer):
# Hash password but passwords are not required
if ('password' in self.request.data):
password = make_password(self.request.data['password'])
serializer.save(password=password)
else:
serializer.save()