При использовании встроенных классов форм Django процедура проверки правильности не работает. Форма состоит просто из имени и фамилии. Первое имя требуется, и для целей тестирования я проверяю, является ли lastname Смитом и вызывает исключение. Когда я нарушаю эти требования ничего не происходит, т. Е. не возникает исключение - после отправки формы определенное действие (POST
- union/VIP_best/
) просто запускается без какой-либо проверки. Форма называется в union/contact/
, направленный от urls.py
к views.ContactView.as_view()
Форма Django и проверка поля не работают?
Вот моя установка до сих пор:
views.py
from union.forms import ContactForm
class ContactView(generic.edit.FormView):
template_name = 'union/contact.html'
form_class = ContactForm
forms.py
from django import forms
from django.core.exceptions import ValidationError
class ContactForm(forms.Form):
firstname = forms.CharField(label='Vorname', max_length=20, required=True, error_messages={'required': 'Please enter first name!'})
lastname = forms.CharField(label='Nachname', max_length=20)
def clean_lastname(self):
data = self.cleaned_data['lastname']
if data != "Smith":
raise forms.ValidationError("Your last name is not Smith.")
else:
raise forms.ValidationError("Your last name is Smith.")
return data
шаблоны/union/contact.html
<form action="/union/VIP_best/" method="post">
{% csrf_token %}
{{ form.as_table }}
<tr>
<td><input type="submit" value="Submit"></td>
</tr>
</form>
Что мне не хватает, так что .clean()
или .is_valid
в настоящее время срабатывает? Должен ли я явным образом звонить Field.clean()
и is_valid()
? Если да, то где? Учебники и документация Django, похоже, не упоминают ничего подобного.
Django 1.7, Python 3.4.2
Является ли форма на странице '/ union/VIP_best /'? Или другая страница? – rnevius
Спасибо за вопрос. Я добавил эту информацию (форма находится на '/ union/VIP_best /'). –
Ваша форма должна быть самой. Значение, если форма находится на '/ union/contact /', вы должны быть 'POST'ing'/union/contact/' – rnevius