|
Table of contents
|
Представьте, что мы выложили форму на боевой сервер и к нам начали приходить сообщения. Но есть одна проблема — некоторые сообщения содержат всего одно-два слова, что недостаточно для нашей цели. Мы решили применить новую политику проверки: четыре слова или больше, пожалуйста.
Существует ряд методов реализации собственного механизма
проверки в форме. Если наше правило будет использоваться в
других проектах, мы можем создать собственный тип
поля. Большинство пользовательских проверок не используются
повторно, хотя и могут быть внедрены в класс
Раз нам требуется дополнительная проверка поля
message, добавим метод
from django import forms
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
email = forms.EmailField(required=False)
message = forms.CharField(widget=forms.Textarea)
def clean_message(self):
message = self.cleaned_data['message']
num_words = len(message.split())
if num_words < 4:
raise forms.ValidationError("Not enough words!")
return message
Библиотека автоматически ищет любой метод, который начинается с clean_ и заканчивается на имя поля. Если такой метод существует, он используется во время выполнения проверки поля.
Данные метод
Мы просто используем комбинацию Важно то, что мы явно возвращаем обработанное значение поля в конце метода. Это позволяет нам модифицировать значение (или преобразовать его в другой тип Python) в рамках данного метода. Если мы забудем воспользоваться оператором return, тогда будет возвращён None и оригинальное значение будет утеряно. |
Found misprint?
Select it with the mouse and hit Enter
-
Processed:
33
1
199
25
The full repository of DjangoBook translation you can get on GitHub.
We appreciate your patches!
We are glad to hear your questions, comments or suggestions!
(Open in new tab)
Users number: 601
Русская группа
Ускорить процесс перевода!
ЯМ:41001223475816
|
| © 2008-2012 Ruslan Popov @ gmail.com | Powered by Django 1.2.5 |
Отличный пример могущества наследования. Мощная, удобная библиотека forms