Форма входа в django нет шаблонов css_classes для шаблонов - PullRequest
0 голосов
/ 22 марта 2011

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

Для общего вида входа в систему я создал обычный шаблон registration\login.html. Однако в шаблоне я не могу получить какие-либо классы для вывода, и метки по умолчанию (.label_tag) не содержат никаких классов.

здесь включается форма:

<div class="default_form">
{{form.non_field_errors}}
<br />
{% for field in form %}
{{field.css_classes}}
<div class="field_container">{{field.label_tag}}{{field}}</div>
<span class="field_help">{{field.help_text}}</span>
<div class="field_errors">{{field.errors}}</div>
<br />
{% endfor %}

я что-то здесь не так сделал?

Мне нужны классы, чтобы мои javascripts проверки работали.

1 Ответ

0 голосов
/ 23 марта 2011

Если вы используете django.contrib.auth.forms.AuthenticationForm или подобное, это, вероятно, связано с тем, что error_css_class и required_css_class (см. Документы) не установлены в классе Form.

>>> from django.contrib.auth.forms import AuthenticationForm
>>> hasattr(AuthenticationForm, 'required_css_class')
False
>>> AuthenticationForm({})['username'].css_classes()
''
>>> class MyForm(AuthenticationForm):
...     error_css_class = 'error'
...     required_css_class = 'required'
...
>>> MyForm({})['username'].css_classes()
'required'

Вы можете решить эту проблему, создав подклассы формы, как в примере выше.

Обратите внимание, что если вы хотите использовать стандартное представление login, вам нужно будет передать свою пользовательскую форму через аргумент authentication_form . Например. в вашем urls.py:

(r'^accounts/login/$', 'django.contrib.auth.views.login', 
    {'authentication_form': MyForm}),
...