yda*_*niv 7 python django django-rest-framework
在django中,创建用户具有与通常的模型实例创建不同且独特的流程.你需要调用create_user()哪种方法BaseUserManager.
既然django REST框架的流程要做restore_object(),那么save_object()就不可能简单地ModelSerializer在通用的创建API端点中使用a来创建用户,而不会破解你.
什么是解决这个问题的干净方法?或者至少使用django的内置滚边让它工作?
编辑:
重要的是要注意,特别是不起作用的是,一旦您尝试使用django.contrib.auth.authenticate它来验证创建的用户实例,如果仅使用User.objects.create()和不创建实例,则失败.create_user().
最终,我重写了序列化器的restore_object方法,并确保使用 来处理发送的密码instance.set_password(password),如下所示:
def restore_object(self, attrs, instance=None):
if not instance:
instance = super(RegisterationSerializer, self).restore_object(attrs, instance)
instance.set_password(attrs.get('password'))
return instance
Run Code Online (Sandbox Code Playgroud)
谢谢大家的帮助!
| 归档时间: |
|
| 查看次数: |
1122 次 |
| 最近记录: |