从Django Allauth注册中删除电子邮件字段

时间:2018-04-02 09:27:05

标签: python django django-allauth

如何从Django allauth注册中删除电子邮件字段? No settings here show any option to remove it

有什么想法吗?

编辑:我的自定义表单:

class AllauthSignupForm(forms.Form):

    captcha = ReCaptchaField()

    class Meta:
        model = User
        fields = ('username', 'password1', 'password2')

    def signup(self, request, user):
        """ Required, or else it throws deprecation warnings """
        pass

settings.py

ACCOUNT_SIGNUP_FORM_CLASS = 'draft1.forms.AllauthSignupForm'

3 个答案:

答案 0 :(得分:0)

试试这个:你的settings.py添加

ACCOUNT_USER_MODEL_EMAIL_FIELD = None
ACCOUNT_EMAIL_REQUIRED = False

如果您希望用户使用用户名

登录,则可能还需要添加此项
ACCOUNT_USERNAME_REQUIRED = True
ACCOUNT_AUTHENTICATION_METHOD = 'username'

可替换地:

ACCOUNT_SIGNUP_FORM_CLASS='yourcustomform'

表格

class YourCustomForm(UserCreationForm):

class Meta:
    model = User
    fields = ('username', 'password1', 'password2', ...)

答案 1 :(得分:0)

您是否尝试exclude email字段?

class AllauthSignupForm(forms.Form):
    captcha = ReCaptchaField()

    class Meta:
        model = User
        fields = ('username', 'password1', 'password2')
        exclude = ('email',)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields.pop('email')

    def signup(self, request, user):
        """ Required, or else it throws deprecation warnings """
        pass

答案 2 :(得分:0)

我遇到了同样的问题,所以我去了外部图书馆/ site-packages / allauth / account / forms.py并注释了第300-314和266-269行。试一试:)