【发布时间】:2014-06-10 03:37:12
【问题描述】:
我正在使用 Django Rest 创建一个简单的 API。我需要创建一个视图,用户可以在其中更改他/她的密码。我正在使用默认的 Django 用户模型和一个简单的UserSerializer。有一种名为set_password 的方法,但我找不到与用户seriliazer 正确使用它的方法。我在任何地方都找不到任何解决方案。
用户序列化器:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', "username", 'email', 'first_name', 'last_name', 'password')
View(ClassedBased):这是一个例子(我不知道我在这里做什么):
class UserChangePassword(APIView):
def patch(self, request):
user = self.request.user
serialized = UserSerializer(data=request.DATA)
if serialized.is_valid():
user.set_password(serialized.data['password'])
user.save()
return Response(status=status.HTTP_205_RESET_CONTENT)
else:
return Response(serialized.errors, status=status.HTTP_400_BAD_REQUEST)
请注意,我想发布一个 json 脚本来更改密码。像这样的东西:
{
"old_password": "123",
"new_password": "12345"
}
【问题讨论】:
-
你为什么要调用 set_password() 两次?
-
UserSerializer 中没有用于以编码形式制作密码。它与我想要的无关。我会带走它,因为有些人会感到困惑
-
您必须将其作为单独的视图吗?我在
ModelViewSet中以另一种方式做到了,就像这样dpaste.com/0EBYX24
标签: python django rest django-rest-framework