Найти - Пользователи
Полная версия: Как добавить тег class к форме после валидации
Начало » Django » Как добавить тег class к форме после валидации
1
k0st1an

form = UserForm(request.POST)
        if form.is_valid():
                ...
        <some code>

Шаблон:

<p>{{ form.email }} = {{ form.email_again }}</p>

Форма не проходит валидацию, как добавить к итему form.email класс CSS? Т.е. по дефорлут input у меня один, а при ошибке должен быть другой, класс в style.css на этот счет уже есть (.input_error). Я знаю про as_* (но вывод у меня по другому выдается), про django-widget-tweaks, но не хочется ставить стороннее. Использовал widgets при создании формы, но это если дефолтное значение. Мне же надо добавить в шаблоне к form.email класс CSS. Может что пропустил в документации???

style.css

input[type='email'] {
    width: 240px;
    height: 22px;
    font-size: 14px;
}
.input_error {
    border: 2px solid red;
}
FishHook
Я б сделал проще
<form>
<input class='{% if errors %}error{% else %}success{% endif %}' >
</form>
k0st1an
Т.е. отказаться от конструктора html кода (ModelForms, Forms) и выводить все ручками, а потом просто обрабатывать requiest.POST???
GreyZmeem
if form.is_valid():
 <your_code>
else:
 css_class = form.fields['your_field'].widget.attrs.get('class', '')
 css_class += ' your_css_class'
 form.fields['your_field'].widget.attrs['class'] = css_class
FishHook
k0st1an
Т.е. отказаться от конструктора html кода (ModelForms, Forms) и выводить все ручками, а потом просто обрабатывать requiest.POST???
Во-первых, никаких постов руками обрабатывать не придется, потому что реквест придет один и тот же.
Во-вторых, ИМХО стандартные as.* переписывать все равно придется ибо родные они так, для примера, любой более менее визуально приличный сайт будет использовать кастомные рендеры форм.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB