Изменение атрибута класса элемента - формы Django - PullRequest
1 голос
/ 21 декабря 2011

У меня есть регистрационная форма, и я использую Django-регистрацию. Теперь мне нужно добавить класс CSS для каждого поля. Кроме того, если есть ошибки проверки, класс css должен отличаться для полей, в которых есть ошибки. Как мне этого добиться?

class RegistrationForm(forms.Form):
"""
Form for registering a new user account.

Validates that the requested username is not already in use, and
requires the password to be entered twice to catch typos.

Subclasses should feel free to add any additional validation they
need, but should avoid defining a ``save()`` method -- the actual
saving of collected user data is delegated to the active
registration backend.

"""
error_css_class = 'error'
required_css_class='wanted'

email = forms.EmailField(widget=forms.TextInput(attrs=dict(maxlength=75)),
                         label=_("Email address"))
password1 = forms.CharField(widget=forms.PasswordInput(render_value=False),
                            label=_("Password"))
password2 = forms.CharField(widget=forms.PasswordInput(render_value=False),
                            label=_("Password (again)"))

В HTML-шаблоне я делаю

<div class="row">
<label for="id_email"><span>*</span> Email Address:</label>
{{ form.email }}
</div>

Примечание В конце концов, я использовал widget_tweaks, что позволило мне сделать

{{form.email|add_class:"blink"|add_error_class:"error"}}

1 Ответ

2 голосов
/ 21 декабря 2011

Вы можете настроить таргетинг на поля формы, не добавляя класс к каждому полю. Просто используйте правила CSS, подобные следующим, в зависимости от того, визуализируете ли вы форму, используя as_table (по умолчанию для метода unicode формы), as_ul или as_p.

form tr {...}
form li {...}
form p  {...}

Для обязательных полей и полей с ошибками вы можете определить атрибуты required_css_class и error_css_class соответственно для формы.

class ContactForm(Form):
    error_css_class = 'error'
    required_css_class = 'required'

Для получения дополнительной информации см. Документы для Требуется стилизация или строки ошибочной формы .

Если вы вручную отображаете поля формы в своем шаблоне, вы можете получить доступ к классам CSS этого поля, используя метод css_classes.

<div class="row {{ form.email.css_classes }}">
<label for="id_email"><span>*</span> Email Address:</label>
{{ form.email }}
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...