邀请用户django allauth
我想介绍一个流程,我们已经在使用allauth,并希望尝试使用allauth(可能会添加另一个包):邀请用户django allauth,django,django-allauth,Django,Django Allauth,我想介绍一个流程,我们已经在使用allauth,并希望尝试使用allauth(可能会添加另一个包): 通过指定新用户的电子邮件邀请新用户(仅限。无需密码) 用户收到一封电子邮件,点击邀请链接,进入一个表单,在那里他的电子邮件已经填写,他需要填写更多的字段,如密码、名字和姓氏,以及一些我将添加到用户模型中的自定义字段 用户单击确认并登录,重定向到根URL 是一个通用的邀请解决方案,它曾经是django allauth的插件,但现在是独立的 有一个允许创建邀请的管理界面 发送给用户的电子邮件基于易
- 有一个允许创建邀请的管理界面
- 发送给用户的电子邮件基于易于覆盖的模板
的Url是用户需要实现的目标account\u signup
第三步,你需要实现你自己这是一篇老文章,但我认为它会在将来帮助别人 我一直在做这项工作,找不到任何稳定的库,也找不到真正符合我要求的库。但是,我从
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参数,并预先填充用户实例。