繁体   English   中英

处理自定义用户模型 Django-Allauth

[英]Handle Custom User Model Django-Allauth

我有一个从 Django 的User扩展的自定义用户模型,我想注册该用户模型,而不是仅注册默认模型。

为此,我根据allauth doc使用ACCOUNT_SIGNUP_FORM_CLASS设置。

这是我在settings.py 中的内容

ACCOUNT_SIGNUP_FORM_CLASS = 'myapp.forms.SignupForm'

myapp/forms.py 中

class SignupForm(UserCreationForm):

    class Meta(UserCreationForm.Meta):
        model = MyUser

    def signup(self, request, user):
        print('test')
        user.save()
        MyUser(user=user).save()

应该执行signup()函数:

这个类 [SignupForm] 应该实现一个 def signup(self, request, user) 方法,其中 user 代表新注册的用户。

但它不是( test未打印)。 仅保存User而不保存MyUser 我究竟做错了什么?

你在这里混合了两件事:

  1. 您正在使用ACCOUNT_SIGNUP_FORM_CLASS来告诉all-auth要使用的自定义注册表单
  2. 您的自定义注册表单继承自 django 自己的UserCreationForm

这样signup()方法将永远不会被调用。

如果您查看这一行,您将看到在调用signup()方法的地方。 因此,如果您想充分利用all-auth的内置表单,我建议您从all-auth库继承SignupForm

再一次,根据您的方法判断,您可能需要考虑设置AUTH_USER_MODEL=MyUser

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM