在Django注册期间强制使用唯一电子邮件地址
在使用Django创建的网站注册期间,是否有一种简单的方法强制使用唯一的电子邮件地址? 我见过一些像HMAC这样的“插件”,但对于我想要实现的东西来说,它似乎有点太复杂了在Django注册期间强制使用唯一电子邮件地址,django,Django,在使用Django创建的网站注册期间,是否有一种简单的方法强制使用唯一的电子邮件地址? 我见过一些像HMAC这样的“插件”,但对于我想要实现的东西来说,它似乎有点太复杂了 另外,是否可以只接受域列表中的注册?(例如只有来自“@google.com”的电子邮件)我遇到了同样的问题,通过将AbstractUser类扩展到我自己的类MyUser并更改默认值,解决了这个问题 然后,通过将this classMyUser作为我所有用户的默认模型类,我可以将此属性(唯一电子邮件)应用于我的web应用程序上的
另外,是否可以只接受域列表中的注册?(例如只有来自“@google.com”的电子邮件)我遇到了同样的问题,通过将
AbstractUser
类扩展到我自己的类MyUser
并更改默认值,解决了这个问题
然后,通过将this classMyUser
作为我所有用户的默认模型类,我可以将此属性(唯一电子邮件)应用于我的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已经具备了用户模型所需的所有基本字段。例如:用户名、密码、电子邮件等。请全部检查
您最不希望做的事情是在setting.py中添加以下内容
AUTH_USER_MODEL = 'myuser.MyUser'
这将确保与您的web应用关联的默认用户是扩展(修改)MyUser
类。这将为您提供django为用户提供的所有基本功能
登录
注销
在您的视图中:您可以在以下位置获取用户实例:request.user
等等
我建议您可能需要一些额外的代码(forms.py和views.py)来通过此类创建用户。我希望你能做到。这应该足以引导你走向正确的方向
也许一个库会有所帮助,但既然你也需要对电子邮件的域进行身份验证,我认为这应该可以做到。依我的拙见,您不能总是依赖第三方库来实现所有其他功能
最后,当您要求验证仅来自@gmail.com或@outlook.com等域的用户时,只需在django表单的clean方法中进行简单检查即可。我希望你知道如何处理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.
我希望这能指引你。谢谢。我也遇到了同样的问题,通过将AbstractUser
类扩展到我自己的类MyUser
并更改默认值,解决了这个问题
然后,通过将this classMyUser
作为我所有用户的默认模型类,我可以将此属性(唯一电子邮件)应用于我的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已经具备了用户模型所需的所有基本字段。例如:用户名、密码、电子邮件等。请全部检查
您最不希望做的事情是在setting.py中添加以下内容
AUTH_USER_MODEL = 'myuser.MyUser'
这将确保与您的web应用关联的默认用户是扩展(修改)MyUser
类。这将为您提供django为用户提供的所有基本功能
登录
注销
在您的视图中:您可以在以下位置获取用户实例:request.user
等等
我建议您可能需要一些额外的代码(forms.py和views.py)来通过此类创建用户。我希望你能做到。这应该足以引导你走向正确的方向
也许一个库会有所帮助,但既然你也需要对电子邮件的域进行身份验证,我认为这应该可以做到。依我的拙见,您不能总是依赖第三方库来实现所有其他功能
最后,当您要求验证仅来自@gmail.com或@outlook.com等域的用户时,只需在django表单的clean方法中进行简单检查即可。我希望你知道如何处理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.
我希望这能指引你。谢谢。这是一本指南!谢谢你!!我会尽快开始工作。现在这是一个指南!谢谢你!!我会尽快开始工作。