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

3
如何从Django allauth注册表单中移除电子邮件字段?这里没有任何选项可以删除它。有什么想法吗?编辑:我的自定义表单:
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'

ACCOUNT_EMAIL_REQUIRED (=False) 这是什么意思? - Vikas Periyadath
我已经设置了 ACCOUNT_EMAIL_REQUIRED = False,但仍然无法从注册表单中删除电子邮件字段(默认情况下已经是 False 了)。 - Zorgan
可能是使用django-allauth时如何自定义用户配置文件的重复问题。 - Dušan Maďar
3个回答

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', ...)

仍然无法从注册表单中删除电子邮件字段。 - Zorgan
我添加了另一种解决方案。 - Olaf Górski
啊,我的错误,我正在使用自定义表单。然而,当我从自定义表单中删除email字段时,它仍然不会删除电子邮件字段。如果您想看的话,我已经在我的编辑中添加了代码。 - Zorgan
这个线程不就是你所描述的吗?(https://dev59.com/4Wct5IYBdhLWcg3wKqQd?noredirect=1&lq=1) - Olaf Górski

0

你尝试过排除邮件字段吗?

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

刚试了一下,还是不行。表单中的电子邮件字段仍然存在。 - Zorgan
如果你在 __init__ 中执行 self.fields.pop('email') 会发生什么?答案已更新。 - Dušan Maďar
我正在使用Python 3,因此super语法对我无效 - 你可以更新一下适用于Python 3的吗? - Zorgan
那是 Python 3 的语法。 - Dušan Maďar
啊,我的错误 - 我尝试过了,但不幸的是它仍然无法工作。我将 'password2' 添加到 'exclude' 中,也不起作用 - 所以肯定是其他问题。 - Zorgan

0
我曾经遇到过同样的问题,所以我去了External Libraries/site-packages/allauth/account/forms.py并注释掉了300-314和266-269行。你可以试一下 :)

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