Django Rest Aut - 用户注册

时间:2016-03-18 17:42:39

标签: django django-rest-auth

我在Django 1.9上使用Django Rest Auth在系统上注册新用户。我需要在此过程中执行一些额外的代码,以便在另一个表上保存额外的数据。

有人知道最好的方法吗?

2 个答案:

答案 0 :(得分:2)

编写 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

我希望这会有所帮助。

答案 1 :(得分:0)

我同意@ ashish2py' s reply above

但是,想要为自定义序列化程序的其他参考文件的保存方法添加一个示例。

<强>步骤:

  1. 在settings.py文件中添加以下行。 (假设您的应用名称为&#34; common_app&#34;)

    REST_AUTH_REGISTER_SERIALIZERS = {
        "REGISTER_SERIALIZER":"common_app.serializers.CustomRegisterSerializer"
    }
    
  2. 在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