在使用Django构建的网站注册期间,是否有简单的方法来强制使用唯一的电子邮件地址? 我见过一些“插件?”像HMAC,但它似乎有点太复杂,我试图实现。在Django注册期间强制使用唯一的电子邮件地址
此外,是否有可能只接受来自域名列表的注册? (如只有来自“@ google.com”的电子邮件)
在使用Django构建的网站注册期间,是否有简单的方法来强制使用唯一的电子邮件地址? 我见过一些“插件?”像HMAC,但它似乎有点太复杂,我试图实现。在Django注册期间强制使用唯一的电子邮件地址
此外,是否有可能只接受来自域名列表的注册? (如只有来自“@ google.com”的电子邮件)
我遇到了同样的问题,并通过将AbstractUser
类扩展到我自己的类MyUser
并更改默认值来解决此问题。
然后,通过将此类MyUser
作为我所有用户的默认模型类,我可以将此属性(唯一电子邮件)应用于我的所有用户在我的Web应用程序上。
创建应用程序myuser。有在models.py:
from django.contrib.auth.models import AbstractUser
#create your own user class.
class MyUser(AbstractUser):
def __init__(self, *args, **kwargs):
self._meta.get_field('email').blank = False
self._meta.get_field('email')._unique = True
super(MyUser, self).__init__(*args, **kwargs)
#Changed the defaults above.
#Give any additional field you want to associate your user with.
注:AbstractUser已经拥有所有你想要的用户模型有基本字段。例如:用户名,密码,电子邮件等。检查所有人here。
,你会想要做的最后一件事是添加下面你setting.py
AUTH_USER_MODEL = 'myuser.MyUser'
这将确保默认用户与你的web应用程序相关联的是扩展(修改)MyUser
类。这将为您提供django为User
提供的所有基本功能。
request.user
等我想建议你可能需要一些额外的代码(在形式.py和views.py)通过这种类创建用户。我希望你能解决这个问题。这应该足以引导你朝着正确的方向前进。
也许一个图书馆会有所帮助,但既然你需要一个电子邮件域的认证,我认为这应该会有诀窍。在我看来,你不能总是依靠第三方库来实现其他功能。
最后,你问验证用户只能从像@ gmail.com或@ outlook.com域,在你的Django形式的清洁方法会做的伎俩一个简单的检查来了。我希望你知道如何处理Django表单。如果没有,那么你可以在官方文档中了解它们。它们是Django的重要组成部分。
你可以利用这个逻辑检查电子邮件:
email = self.cleaned_data['email']
email_source = email.split('@')[-1]
#email_source will now have values like: gmail.com, outlook.com etc
#you can now validate email_source now like:
permitted_sources = ['gmail.com' , 'outlook.com' , ]
if email_source in permitted_sources:
return cleaned_data
else:
raise forms.ValidationError('Error Message')
#Note: This logic should be kept in your clean method.
我希望这将引导您。谢谢。
现在,这是一个指导!非常感谢你!!将尽快工作。 – willer2k