Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как добавить тег class к форме после валидации [RSS Feed]

#1 Май 12, 2014 12:17:17

k0st1an
Зарегистрирован: 2013-02-07
Сообщения: 86
Репутация: +  0  -
Профиль   Отправить e-mail  

Как добавить тег class к форме после валидации


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;
}



—-
memento mori

Офлайн

#2 Май 12, 2014 12:39:29

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как добавить тег class к форме после валидации

Я б сделал проще

<form>
<input class='{% if errors %}error{% else %}success{% endif %}' >
</form>



Отредактировано FishHook (Май 12, 2014 12:39:40)

Офлайн

#3 Май 12, 2014 12:51:39

k0st1an
Зарегистрирован: 2013-02-07
Сообщения: 86
Репутация: +  0  -
Профиль   Отправить e-mail  

Как добавить тег class к форме после валидации

Т.е. отказаться от конструктора html кода (ModelForms, Forms) и выводить все ручками, а потом просто обрабатывать requiest.POST???



—-
memento mori

Офлайн

#4 Май 12, 2014 14:03:59

GreyZmeem
От: Киев
Зарегистрирован: 2013-12-03
Сообщения: 147
Репутация: +  34  -
Профиль   Отправить e-mail  

Как добавить тег class к форме после валидации

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

Офлайн

#5 Май 12, 2014 16:01:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как добавить тег class к форме после валидации

k0st1an
Т.е. отказаться от конструктора html кода (ModelForms, Forms) и выводить все ручками, а потом просто обрабатывать requiest.POST???
Во-первых, никаких постов руками обрабатывать не придется, потому что реквест придет один и тот же.
Во-вторых, ИМХО стандартные as.* переписывать все равно придется ибо родные они так, для примера, любой более менее визуально приличный сайт будет использовать кастомные рендеры форм.



Офлайн

  • Начало
  • » Django
  • » Как добавить тег class к форме после валидации[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version