Python Django-调用.super().clean()后未列出电子邮件字段
我是Django的新手,如果这是一个基本问题(或错误),我深表歉意,但当我键入电子邮件时,我遇到了电子邮件格式验证方面的问题,如:test@com 我为测试创建了下面的form.py和views.py: form.pyPython Django-调用.super().clean()后未列出电子邮件字段,python,django,validation,email-validation,Python,Django,Validation,Email Validation,我是Django的新手,如果这是一个基本问题(或错误),我深表歉意,但当我键入电子邮件时,我遇到了电子邮件格式验证方面的问题,如:test@com 我为测试创建了下面的form.py和views.py: form.py from django import forms from django.core import validators class userForm(forms.Form): fname = forms.CharField(label="First name")
from django import forms
from django.core import validators
class userForm(forms.Form):
fname = forms.CharField(label="First name")
lname = forms.CharField(label="Last name")
email = forms.EmailField(label="Email")
vemail = forms.EmailField(label="Email validation")
def clean(self):
all_clean_data = super().clean()
fname = all_clean_data['fname'].lower().capitalize()
lname = all_clean_data['lname'].lower().capitalize()
email = all_clean_data['email'].lower()
vmail = all_clean_data['vemail'].lower()
if email != vmail:
raise forms.ValidationError("Email address doesn't match, please try again")
def users(request):
form = forms.userForm()
if request.method == 'POST':
form = forms.userForm(request.POST)
if form.is_valid():
print('Validation ok')
return render(request,"test_app/users.html",{'formName':form})
视图.py
from django import forms
from django.core import validators
class userForm(forms.Form):
fname = forms.CharField(label="First name")
lname = forms.CharField(label="Last name")
email = forms.EmailField(label="Email")
vemail = forms.EmailField(label="Email validation")
def clean(self):
all_clean_data = super().clean()
fname = all_clean_data['fname'].lower().capitalize()
lname = all_clean_data['lname'].lower().capitalize()
email = all_clean_data['email'].lower()
vmail = all_clean_data['vemail'].lower()
if email != vmail:
raise forms.ValidationError("Email address doesn't match, please try again")
def users(request):
form = forms.userForm()
if request.method == 'POST':
form = forms.userForm(request.POST)
if form.is_valid():
print('Validation ok')
return render(request,"test_app/users.html",{'formName':form})
看来一切都很好。。。但是如果在表格(网页)中键入电子邮件地址,如:test@com然后提交表单,会发生两件事:
KeyError at /
'email'
Request Method: POST
Request URL: http://127.0.0.1:8000/
Django Version: 3.0.3
Exception Type: KeyError
Exception Value:
'email'
Exception Location: /Users/.../test_app/forms.py in clean, line 20
Python Executable: /Users/.../bin/python
Python Version: 3.8.2
Python Path:
['/Users/.../test_project/test_project',
'/Users/.../opt/anaconda3/envs/myDjangoEnv/lib/python38.zip',
'/Users/.../opt/anaconda3/envs/myDjangoEnv/lib/python3.8',
'/Users/.../opt/anaconda3/envs/myDjangoEnv/lib/python3.8/lib-dynload',
'/Users/.../opt/anaconda3/envs/myDjangoEnv/lib/python3.8/site-packages']