Я новичок в Django и приношу свои извинения, если это базовый c вопрос (или ошибка), но у меня возникают проблемы с проверкой формата электронной почты, когда электронное письмо набирается как: test@com.
Я создал форм.py и views.py ниже для теста:
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")
views.py
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 и отправьте форму, произойдет 2 вещи:
- Я не получаю оповещение типа "Неверный формат электронной почты" на форме (веб-странице)
- Ключ электронной почты "ключ" on all_clean_data ['email'] не существует.
Если я введу действительное письмо, например: test@test.com, оно будет работать. Если я ввожу недопустимый адрес электронной почты, например: abcde, то получаю сообщение с предупреждением.
Проблема заключается в том, что я набираю такие вещи, как: 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']