3

我怎样才能覆盖中的默认clean_email()方法allauth.account.forms.BaseSignupForm。我在 Forms.py 中尝试了以下内容:

from allauth.account.forms import BaseSignupForm

    class Extended_BaseSignupForm(BaseSignupForm):
        def clean_email(self):
            data = self.cleaned_data['email']
            if "@gmail.com" not in data:   # any check you need
                raise forms.ValidationError("Must be a gmail address")
            if app_settings.UNIQUE_EMAIL:
                if data and email_address_exists(data):
                    raise forms.ValidationError \
                        (_("A user is registered with this e-mail address."))
            return data

覆盖的目的是防止用户使用一次性电子邮件 ID 进行注册。

4

2 回答 2

5

这在即将发布的 allauth 版本中变得更容易了。您可以在这里简单地覆盖clean_email适配器方法:

https://github.com/pennersr/django-allauth/blob/4bb9e0170f37d8196bd0c4a78e83adb7b779c113/allauth/account/adapter.py#L175

使用该ACCOUNT_ADAPTER设置指向包含覆盖方法的自定义适配器。

于 2013-05-06T13:28:53.707 回答
1

基本上,您需要覆盖 URL 以将表单类作为关键字参数传递给视图。

本文演示了如何覆盖外部视图中的表单

于 2013-05-06T10:51:29.150 回答