Почему я получаю ключевую ошибку в своем коде Django, указанном ниже? - PullRequest
0 голосов
/ 08 января 2019
from django import forms
from django.core import validators

class FormName(forms.Form):
    name=forms.CharField()            
    email=forms.EmailField()
    verify_email=forms.EmailField(label='Confirm your email')
    text=forms.CharField(widget=forms.Textarea)

    def clean(self):  #Allows us to grab all the clean data at once
        all_clean_data=super().clean() #This will clean the entire Form
        email=all_clean_data['email']
        vmail=all_clean_data['verify_email']
        if email != vmail:
            raise forms.ValidationError("Make sure your emails match")

В этом коде я получаю ключевую ошибку в строке vmail=all_clean_data['verify_email']:

KeyError: 'verify_email'

1 Ответ

0 голосов
/ 08 января 2019

Если поле недопустимо, оно не будет отображаться в очищенных данных формы. Вы можете справиться с этим в чистом методе формы, используя get().

def clean(self):  #Allows us to grab all the clean data at once
    all_clean_data=super().clean() #This will clean the entire Form
    email=all_clean_data.get('email')
    vmail=all_clean_data.get('verify_email')
    if email and vemail:
        if email != vmail:
            raise forms.ValidationError("Make sure your emails match")

Для получения дополнительной информации см. Документы по проверке полей, которые зависят друг от друга .

...