人能以注册形式将电子邮件输入仅限制于公司电子邮件(例如@ bp.com @ kpmg.com等),从而消除非商业电子邮件(例如gmail.com yahoo.com等)吗?因此,如果用户插入xxx@gmail.com,表单将被拒绝并要求插入商业电子邮件?当我申请硕士时,我看到了这样的选择,他们要求重新推荐以插入商务电子邮件。
您建议寻找什么来源或可以共享哪些代码示例?如果可以的话,任何想法都会很棒。
我的forms.py
是
导入get_user_model 从django.contrib.auth.forms导入UserCreationForm
class UserCreateForm(UserCreationForm):
class Meta:
fields = ('username','email','password1','password2')
model = get_user_model()
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
self.fields['username'].label = 'Display Name'
self.fields['email'].label = 'Email Address'
任何帮助将不胜感激。
答案 0 :(得分:2)
您可以在字段中添加验证器以检查域:
from django.core.validators import RegexValidator
domain_validator = RegexValidator(
regex='@(bp\.com|kpmg\.com)$',
message='Domain not valid',
code='invalid_domain',
)
class UserCreateForm(UserCreationForm):
email = forms.EmailField(validators=[domain_validator])
# ...
正则表达式可能可以改进,但是应该可以工作
答案 1 :(得分:0)
实际上,没有任何一种最佳方法可以完成您要尝试做的事情,因为django
并不是一个完全django
的问题。
但是,已经说过我们可以以一种未优化的方式来做到这一点,也就是说,我们可以创建电子邮件的黑名单,例如google
,yahoo
,{{1} }等
由于存在大量此类公司,因此我们无法一次全部添加它们,因为我们不了解它们全部。
但是随着时间的流逝,我们可以不断更新黑名单,也许我们可以随着时间的流逝实现您想要达到的目标。
在此处的this中,有人给出了一个预先创建的黑名单的链接,该链接包含许多此类电子邮件,您可以将它们添加到黑名单中,但是正如我之前所说,该列表可能永远无法完成。
有了这个黑名单,您可以检查表单提交,如果提交的电子邮件没有以简单的hotmail
结尾的黑名单中的任何电子邮件结尾。
P.S:根据我的看法,鉴于某些小型企业有python
个地址,这样做确实没有道理。