2009-07-15 4 views
9

Я только начал использовать django. Я наткнулся на формы, и мне нужно знать, какой из них - лучший способ проверить формы. Будут ли использоваться форматы django или мы должны использовать javascript или некоторый язык сценариев на стороне клиента, чтобы сделать это?Проверка формы в django

+3

Вы получите намного больше зрителей с тегом 'django', чем subtag, например' django-forms'. Всегда старайтесь включать хотя бы один тег для основной платформы/языка, который вы используете (например, '.net',' java', 'django' и т. Д.), Особенно если вы не достигли пяти ограничений на теги. – Zifre

ответ

16

Вы должны ВСЕГДА проверять форму на стороне сервера, проверка на стороне клиента - это только удобство для пользователя.

Это, как говорится, формы Django имеют переменную form.errors, которая показывает, были ли определенные поля формы неправильными.

{{form.name_of_field.errors}} может дать вам каждую отдельную ошибку каждого поля, которое неправильно заполнено. Подробнее здесь:

http://docs.djangoproject.com/en/dev/topics/forms/

+4

Одна вещь, о которой не упоминает docs *, - это существование {{form.non_field_errors}}, если вы хотите получить * просто * ошибки, которые относятся к форме в целом. –

+0

Да, я нахожу, что документы упускают много чего, или просто не вдаваться в подробности. Надеюсь, что, поскольку рамки развиваются, документы также работают. – AlbertoPL

+0

Чтобы повторить то, что сказал Альберто: проверка на стороне клиента не подтверждена. Любой может обработать запрос POST или GET. Единственное фактическое преимущество, которое вы получаете от проверки на стороне клиента, - это «ощущение Web 2.0 AJAXy» для пользователя, но это не проверка - это происходит на стороне сервера. – ShawnMilo

5

Там в подключаемым приложение Django (django-ajax-forms), который помогает проверки форм на стороне клиента через JavaScript. Но, как говорит AlbertoPL, используйте проверку на стороне клиента только как меру юзабилити (например, сообщая пользователю, что его желаемое имя пользователя уже принято без перезагрузки страницы регистрации). Есть все способы обойти проверку на стороне клиента, в большинстве случаев так же просто, как деактивация JavaScript.

Вообще говоря, предположим, что все данные поступают извне как неисправные до тех пор, пока не будут проверены.

4

Только что произошло через django-floppyforms, который, по-видимому, выполняет проверку клиентов по умолчанию. Они используют HTML5, который по умолчанию поддерживает проверку клиентов. Не уверен, что они также используют javascript, хотя если браузер не поддерживает HTML5. Я еще не пробовал.

Ссылка на Джанго-floppyforms: Documentation и Github

0

Вам нужно будет сделать это JS. This app объединяет формы с parsley.js, чтобы автоматически маркировать формы с правильными атрибутами data- *.

2

Если вы используете bootstrap, тогда вы можете просто добавить обязательный атрибут в поле формы. Например, если есть Programe поле, то вы можете проверить это нравится:

В forms.py:

programme = forms.ChoiceField(course_choices,required=True, widget=forms.Select(attrs={'required':'required'})) 

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