** Я перешел от среды. Новый адрес kodare.net **

У форм в Django есть особенность, которая по сути возникает из. Однако это может быть неочевидно, пока вас не укусят несколько раз. Возьмем очень простой пример:

class MyForm(forms.Form):
    foo = forms.CharField()
    def clean_foo(self):
        if self.cleaned_data['foo'] == 'bar':
            raise forms.ValidationError('bar is an invalid value')

Просто потому, что имя метода соответствует шаблону clean_<field_name>, он вызывается. В определении foo нет ничего, что связывало бы его с методом clean. Это чревато ошибками, потому что если вы переименуете поле и забудете переименовать метод очистки, он не будет вызван. Если бы только Django подтвердил, что все методы, соответствующие шаблону clean_<name>, соответствуют имени действительно существующего поля, это не было бы таким хрупким.

Это была одна из многих причин, по которым мы написали замену библиотеке форм. Посмотрите на тот же пример в tri.form:

class MyForm(Form):
    foo = Field.text(is_valid=lambda value, **_: (value != 'bar', "bar is an invalid value"))

Исчез риск сломать что-то из-за того, что ваши строковые тексты не выстраиваются в линию (и мы избавляемся от большого количества шаблонов в качестве бонуса).