如何使用Django allauth创建合适的用户?

18
  • 如果我只有一个电子邮件地址
  • 如果我目前不关心密码(用户之后将通过“令牌链接”登录)

在纯Django中,我会这样做:

from django.contrib.auth.models import User
user = User.objects.create_user(username=email, email=email)

但是,Django Allauth带有这个 EmailAdress 的东西。我只需要创建其中的一个,那么就可以正常使用了吗?

from allauth.account.models import EmailAddress
EmailAddress.objects.create(user=user, email=email, primary=True, verified=False)

我不想破坏一些Django allauth的逻辑,而且现有的适配器方法不符合我的需求。

编辑:用EmailAddress替换了setup_user_email

编辑2:用create替换了add_email,并希望设置primary=True

1个回答

3
创建用户的规范方式似乎被卡在了“SignupForm.save()”方法中:

https://github.com/pennersr/django-allauth/blob/6b2167ca245558317be1f8881f162f4d5312eb95/allauth/account/forms.py#L401-L408

编辑:实际上它在SignupView中更高一级,先调用SignupForm.save(),然后调用account.utils.complete_signup(),该函数发送user_signed_up信号。

https://github.com/pennersr/django-allauth/blob/6b2167ca245558317be1f8881f162f4d5312eb95/allauth/account/views.py#L227-L237

https://github.com/pennersr/django-allauth/blob/6b2167ca245558317be1f8881f162f4d5312eb95/allauth/account/utils.py#L171-L183


1
complete_signup 是可以的,但是要添加 EmailAddress 到您的帐户,您必须调用 setup_user_email(request,user,[]) - mka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接