Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
邀请用户django allauth_Django_Django Allauth - Fatal编程技术网

邀请用户django allauth

邀请用户django allauth,django,django-allauth,Django,Django Allauth,我想介绍一个流程,我们已经在使用allauth,并希望尝试使用allauth(可能会添加另一个包): 通过指定新用户的电子邮件邀请新用户(仅限。无需密码) 用户收到一封电子邮件,点击邀请链接,进入一个表单,在那里他的电子邮件已经填写,他需要填写更多的字段,如密码、名字和姓氏,以及一些我将添加到用户模型中的自定义字段 用户单击确认并登录,重定向到根URL 是一个通用的邀请解决方案,它曾经是django allauth的插件,但现在是独立的 有一个允许创建邀请的管理界面 发送给用户的电子邮件基于易

我想介绍一个流程,我们已经在使用allauth,并希望尝试使用allauth(可能会添加另一个包):

  • 通过指定新用户的电子邮件邀请新用户(仅限。无需密码)
  • 用户收到一封电子邮件,点击邀请链接,进入一个表单,在那里他的电子邮件已经填写,他需要填写更多的字段,如密码、名字和姓氏,以及一些我将添加到用户模型中的自定义字段
  • 用户单击确认并登录,重定向到根URL
  • 是一个通用的邀请解决方案,它曾经是django allauth的插件,但现在是独立的

    • 有一个允许创建邀请的管理界面
    • 发送给用户的电子邮件基于易于覆盖的模板
    • account\u signup
      的Url是用户需要实现的目标

    第三步,你需要实现你自己这是一篇老文章,但我认为它会在将来帮助别人

    我一直在做这项工作,找不到任何稳定的库,也找不到真正符合我要求的库。但是,我从
    rest\u auth
    研究了RegisterSerializer的代码,然后创建了自己的代码来覆盖RegisterSerializer中的特定方法

    这是我的最终代码:

    class UserInviteSerializer(RegisterSerializer):
    
        # first_name and last_name were required for my case but they are not necessary.
        first_name = serializers.CharField(required=True)
        last_name = serializers.CharField(required=True)
        email = serializers.EmailField(required=True)
        # override password1 and password2 to not be required.
        password1 = serializers.CharField(write_only=True, required=False)
        password2 = serializers.CharField(write_only=True, required=False)
    
        # override validate so that you don't get the error that
        # password1 and password2 are required. 
        def validate(self, data):
            return data
    
        def get_cleaned_data(self):
            super(UserInviteSerializer, self).get_cleaned_data()
    
            return {
                'first_name': self.validated_data.get('first_name', ''),
                'last_name': self.validated_data.get('last_name', ''),
                'email': self.validated_data.get('email', ''),
            }
    
        # create your own create method.
        def create(self, validated_data):
            user = models.User(**validated_data)
    
            # this is really important because password is required 
            # by the User model. So you need to use the django method
            # `set_unusable_password`
            user.set_unusable_password()
    
            # username was not being generated by AllAuth so I had to set it.
            user.username = user.email
    
            user.save()
            return user 
    

    现在,您可以创建其他视图,让用户设置密码,您可以检查他们是否已经有可用的密码,或者是否没有使用django user方法
    has\u usable\u password()

    您可以创建一个自定义注册表&视图,该视图将电子邮件地址作为GET参数,并预先填充用户实例。