如何覆盖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。
答案 0 :(得分:5)
在即将发布的allauth版本中,这已经变得更容易了。您可以在此处覆盖clean_email
适配器方法:
使用ACCOUNT_ADAPTER
设置指向包含overriden方法的自定义适配器。
答案 1 :(得分:1)
基本上,您需要覆盖URL以将表单类作为关键字参数传递给视图。
This article demonstrates how to override a form in an external view。