使用 Django 避免临时电子邮件
Avoid temp emails using Django
我想阻止临时电子邮件并确保只有当电子邮件是真实的(例如 Gmail、Outlook、Yahoo)时用户才能注册。
forms.py
class SginupForm(UserCreationForm):
class Meta:
model = User
fields =('username', 'first_name','last_name','email','password1','password2' )
views.py
@unauthenticated_user
def signup_form(request):
if request.method == 'POST':
form=SginupForm(request.POST)
if form.is_valid():
user=form.save()
send_action_email(user,request)
messages.add_message(request, messages.SUCCESS,
'we have sent ur activation link')
return redirect('core:login')
else:
form=SginupForm()
return render(request,'user/sign-up.html',{'form':form})
没有一种自动方法可以知道电子邮件是否为临时电子邮件。所以我只会使用白名单。只需确保包含所有最受欢迎的电子邮件提供商(Google 搜索)。
创建电子邮件列表。作为良好实践,这应该作为 views.py 文件顶部的常量。
ALLOWED_EMAILS = ["gmail.com", "outlook.com", "yahoo.com"]
然后当您的用户提交注册表单时,只需验证电子邮件
地址以这些中的任何一个结尾。
以下条件检查电子邮件是否未以任何列入白名单的电子邮件结尾。在用户提交表单后立即添加它。添加您自己的自定义消息和重定向逻辑。
email = form.cleaned_data.get("email")
if not any(email.endswith(e) for e in ALLOWED_EMAILS):
# Add a failure message to the request.
# Redirect back to the login page.
我想阻止临时电子邮件并确保只有当电子邮件是真实的(例如 Gmail、Outlook、Yahoo)时用户才能注册。
forms.py
class SginupForm(UserCreationForm):
class Meta:
model = User
fields =('username', 'first_name','last_name','email','password1','password2' )
views.py
@unauthenticated_user
def signup_form(request):
if request.method == 'POST':
form=SginupForm(request.POST)
if form.is_valid():
user=form.save()
send_action_email(user,request)
messages.add_message(request, messages.SUCCESS,
'we have sent ur activation link')
return redirect('core:login')
else:
form=SginupForm()
return render(request,'user/sign-up.html',{'form':form})
没有一种自动方法可以知道电子邮件是否为临时电子邮件。所以我只会使用白名单。只需确保包含所有最受欢迎的电子邮件提供商(Google 搜索)。
创建电子邮件列表。作为良好实践,这应该作为 views.py 文件顶部的常量。
ALLOWED_EMAILS = ["gmail.com", "outlook.com", "yahoo.com"]
然后当您的用户提交注册表单时,只需验证电子邮件 地址以这些中的任何一个结尾。
以下条件检查电子邮件是否未以任何列入白名单的电子邮件结尾。在用户提交表单后立即添加它。添加您自己的自定义消息和重定向逻辑。
email = form.cleaned_data.get("email")
if not any(email.endswith(e) for e in ALLOWED_EMAILS):
# Add a failure message to the request.
# Redirect back to the login page.