FishHookвроде изначально было сделано именно так как вы пишете и как указано в документации
gtlhbkkj
from django import forms import re from django.utils.translation import gettext_lazy as _ class SearchForm(forms.Form): bez = forms.CharField(max_length=40, label=_("Search condition / Cross-reference "), required=False) def clean(self): cleaned_data = super(SearchForm, self).clean() bez0 = cleaned_data.get('bez') cleaned_bez = re.sub('([^a-zA-Z0-9])',"", bez0) cleaned_bez = cleaned_bez.upper() cleaned_bez = cleaned_bez.replace("NBR","") if len(cleaned_bez) < 3: raise forms.ValidationError(_('PLEASE ENTER AT LEAST 3 CHARACTERS')) return(cleaned_bez)
то есть требуемое поле очищается, нормализуется и проверяется на условия.
Если длина очищенного поля меньше трех символов - то вызвать ошибку.
Эта ошибка вызывается и вьюха ее видит в переменной form.errors и при желании печатает эту ошибку в терминале.
Значит эта ошибка передается в контекстной переменной в темплейт, который ее уже почему-то не видит.
def search_form(request): if request.method == 'POST': form = SearchForm(request.POST) context = {'form':SearchForm} print(form.errors) if form.is_valid(): context = do_search_in_cross_ref(form.cleaned_data) else: cform = SearchForm() context = {'form':cform} return render(request, 'ael/start_page.html', context)

