我在 Django 1.9 上使用 Django Rest Auth 在系统上注册新用户。而且我需要在这个过程中执行一些额外的代码来将额外的数据保存在另一个表上。
有人知道最好的方法吗?
我在 Django 1.9 上使用 Django Rest Auth 在系统上注册新用户。而且我需要在这个过程中执行一些额外的代码来将额外的数据保存在另一个表上。
有人知道最好的方法吗?
编写CustomRegisterSerializer并将其添加到settings.py文件中。
REST_AUTH_REGISTER_SERIALIZERS = {
"REGISTER_SERIALIZER":"common_app.serializers.CustomRegisterSerializer"
}
编写新创建的序列化程序的save()方法并添加一些额外的可执行代码。
如果您的用户模型有额外的字段,您可以编写您的validate_field方法。
作为参考,您可以在此处查看rest_auth RegistrationSerializer https://github.com/Tivix/django-rest-auth/blob/master/rest_auth/registration/serializers.py
我希望这有帮助。
我同意上面@ashish2py 的回复:
但是,想为自定义序列化程序的保存方法添加一个示例以供其他参考。
脚步:
在 settings.py 文件中添加以下行。(假设您的应用名称是“common_app”)
REST_AUTH_REGISTER_SERIALIZERS = {
"REGISTER_SERIALIZER":"common_app.serializers.CustomRegisterSerializer"
}
在 common_app/serializer.py 文件中添加 CustomRegisterSerializer 类如下(覆盖保存方法)。
class CustomRegisterSerializer(RegisterSerializer):
def save(self, request):
user = super(CustomRegisterSerializer, self).save(request)
logger.debug("[GroupProfile-Manager] Manager user registration #{}: {}".format(user.id, user.email))
### YOUR CUSTOM LOGIC GOES HERE ###
group_prof_obj.join(user=user, role='manager')
return user