Форум сайта python.su
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)
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)
Отредактировано gtlhbkkj (Май 25, 2020 14:00:57)
Офлайн
Вы сами себя то слышите или нет?
Цитирую
Эта ошибка вызывается и вьюха ее видит в переменной form.errors
{% for error in form.bez.errors %}
Офлайн
FishHookвы правы, конечно, естественно что я в темплейте также пробовал искать ошибку ValidationError и в
Вы сами себя то слышите или нет?Цитирую
{{form.errors}}
{% if form.bez.errors %} {% for error in form.bez.errors %} <div class="alert alert-warning" role-"alert"> {{ error }} </div> {% endfor%} {% endif %} {% if form.errors %} {% for error in form.errors %} <div class="alert alert-warning" role-"alert"> {{ error }} </div> {% endfor%} {% endif %}
x_short_input = True
{% if x_short_input %}
Отредактировано gtlhbkkj (Май 25, 2020 16:37:19)
Офлайн
Не могу понять что у вас не получается, вот накидал такую тестовую страничку
from django.shortcuts import render_to_response from django import forms class MyForm(forms.Form): name = forms.CharField(label='Name') age = forms.IntegerField(label='Age') def clean(self): data = super(MyForm, self).clean() raise forms.ValidationError('Common error') return data def clean_age(self): age = self.cleaned_data['age'] raise forms.ValidationError('Error in age') return age def clean_name(self): name = self.cleaned_data['name'] raise forms.ValidationError('Error in name') return name def index(request): form = MyForm(data={'age': 10, 'name': 'Ivanushka'}, initial={'age': 10, 'name': 'Ivanushka'}) form.is_valid() print form.errors return render_to_response('index.html', {'form': form})
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .non-field-errors { display: block; background-color: coral; color: wheat; } .field-errors { display: block; background-color: bisque; color: blue; } .field { display: block; } </style> </head> <body> {% if form.non_field_errors %} <div class="non-field-errors"> {% for err in form.non_field_errors %} <p class="form-error">{{ err }}</p> {% endfor %} </div> <hr> <div class="field"> {{form.age}} </div> {% for error in form.age.errors %} <div class="field-errors"> {{ error }} </div> {% endfor %} <hr> <div class="field"> {{form.name}} </div> {% for error in form.name.errors %} <div class="field-errors"> {{ error }} </div> {% endfor %} {% endif %} </body> </html>
Офлайн
FishHook
Не могу понять что у вас не получается, вот накидал такую тестовую страничку
Офлайн