django allauth 自定义注册表单来分配不同的组

标签 django django-allauth

我的系统中有两种类型的用户,我想在注册时分配适当的组。引用How to customize user profile when using django-allauth ,我想我可以覆盖注册表单并执行以下操作:

class CustomSignupForm(forms.Form):
    login_widget = forms.TextInput(attrs={'type': 'email',
                                              'placeholder': _('email'),
                                              'autofocus': 'autofocus',
                                              'class': 'form-control'
                                      })

    email = forms.EmailField(label='Email', widget=login_widget)
    password = PasswordField(label='Password', widget=forms.PasswordInput(attrs={'class': 'form-control'}))
    password2 = PasswordField(label='Re-type Password', widget=forms.PasswordInput(attrs={'class': 'form-control'}))

    def save(self, request, user):
        role = request.GET.get('type')
        print(role)
        group = role or "group1"
        g = Group.objects.get(name=group)
        user.groups.add(g)
        user.save()

但我不断收到以下错误:

save() missing 1 required positional argument: 'user'

此外,我已将 allauth 配置为使用电子邮件登录。

感谢您的帮助。

最佳答案

signup是覆盖而不是保存的方法。

class LocalSignupForm(forms.Form):
    pass

    def signup(self, request, user):
        role = request.session.get('user_type')
        group = role or "Default"
        g = Group.objects.get(name=group)
        user.groups.add(g)
        user.save()

设置也必须是

ACCOUNT_SIGNUP_FORM_CLASS = 'useraccount.forms.LocalSignupForm'

关于django allauth 自定义注册表单来分配不同的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27180427/

相关文章:

Django、haystack、 Elasticsearch 和一对多关系

python - 从html内容中提取数据

python - 如何显示来自谷歌帐户的图像: django-allauth

python - Django - 创建两种用户类型,其中一种类型可以是两种类型

django - 如何让 django-allauth 发送 html 电子邮件

DjangoRestFramework - 序列化器验证会引发 KeyError,即使它是由 Perform_create() 方法提供的

python - ModelAdmin 线程安全/缓存问题

Django-Allauth 范围不适用于任何提供程序

django - 使用电话或电子邮件登录/注册 django、allauth 集成

python - 复制从抽象模型派生的类的所有字段 (Django)