Python 如何将validate_电子邮件包包含到django UserCreationForm中?
我从PyPI()下载了一个电子邮件验证程序包,并使用Python 如何将validate_电子邮件包包含到django UserCreationForm中?,python,django,validation,django-registration,Python,Django,Validation,Django Registration,我从PyPI()下载了一个电子邮件验证程序包,并使用 pip install validate email 及 (因为我的python版本是3.6.7)添加到我的django项目中 问题是我无法让validate\u email功能在我的django项目上工作,因此我想知道我应该在django的forms.py和views.py(还没有使用models.py)上写什么代码 请告诉我我做错了什么,以及应该对forms.py中的当前代码进行哪些更改 我包括 从django.core.valida
pip install validate email
及
(因为我的python版本是3.6.7)添加到我的django项目中
问题是我无法让validate\u email
功能在我的django项目上工作,因此我想知道我应该在django的forms.py
和views.py
(还没有使用models.py
)上写什么代码
请告诉我我做错了什么,以及应该对forms.py
中的当前代码进行哪些更改
我包括
从django.core.validators导入验证\u电子邮件
如下面的forms.py
所示,尝试验证任何用户输入的电子邮件,但是validate\u电子邮件
的工作方式似乎与validate\u电子邮件
中的validate\u电子邮件
不同
我需要的验证来自PyPI,因为它在验证中更准确(例如,可以检查电子邮件是否存在),而validate\u email
form django.validators只检查无效格式,仅此而已
/* forms.py */
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from django.core.validators import validate_email
from validate_email import validate_email
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
phone_number = forms.IntegerField(required=True)
class Meta:
model = User
fields = ['username', 'email']
def clean_email(self):
email_passed = self.cleaned_data.get("email")
email_req = "yourdomain.com"
if not email_req in email_passed:
raise forms.ValidationError("Invalid email format")
return email
/* views.py */
from django.shortcuts import render, redirect
from django.contrib import messages
from .forms import UserRegisterForm
def register(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid():
user = form.save()
phone_number = form.cleaned_data['phone']
# do something with phone number??
username = form.cleaned_data.get('username')
messages.success(request, f'Account created for {username}!')
return redirect('blog-home')
else:
form = UserRegisterForm()
return render(request, 'users/register.html', {'form': form})
我希望输出通过使用get方法获取电子邮件并使用validate_email进行验证,从而从django表单的email字段验证电子邮件。
例如,如果输入的电子邮件为“ifewheieuiower34@gmail.com“这是一封不存在的电子邮件,表单应该会引发一个错误,说明该电子邮件不存在。您没有使用clean方法从包中调用
验证电子邮件
功能。你可以在你的clean_email
方法中这样调用它
def clean_email(self):
email = self.cleaned_data.get("email")
if not validate_email(email):
raise forms.ValidationError("Invalid email")
return email
if语句中缺少冒号。
def clean_email(self):
email = self.cleaned_data.get("email")
if not validate_email(email):
raise forms.ValidationError("Invalid email")
return email