Настройка форм аутентификации пользователей Django - PullRequest
3 голосов
/ 09 октября 2011

Я новичок в Джанго. Я строю проект Django, который использует модуль аутентификации Django.

Так что я использую LoginForm, который генерирует переменные контекста {{form.username}} и {{form.password}} для любого пользователя для входа в систему. Но чтобы сделать UX лучше, у меня есть что-то вроде

    <td><input type="text" name="username"  id="" size="30" value="" class='loginput'/></td>

вместо простого

    <td>{{ form.username }}</td>

Как мне использовать входные теги, но при этом использовать бэкэнд-формы django-аутентификации? Я также понимаю, что для любой другой формы я мог бы использовать виджеты, form-media. Я не могу решить эту проблему.

Спасибо.

1 Ответ

4 голосов
/ 10 октября 2011

Почему это повышает удобство использования?Единственное отличие состоит в том, что вы добавили class и по какой-то причине удалили атрибут id, что делает невозможным использование label.Я не вижу никаких обстоятельств, при которых создание чего-то менее доступного сделало бы UX лучше.А устранение динамической способности форм Django повторно отображать неправильные значения в случае неудачи валидации, похоже, вряд ли является шагом вперед.

Хотя я не совсем понимаю, о чем спрашивает ваш вопрос.Если вы действительно хотите использовать эту менее полезную разметку в своем шаблоне, почему бы просто не сделать это?Вы должны предоставить шаблон для представлений contrib.auth в любом случае, так что у вас есть такая возможность.

Конечно, гораздо лучший способ - просто создать подкласс LoginForm и добавить туда свой класс HTML:

class LoginForm(auth.forms.AuthenticationForm):
    username = forms.CharField(label=_("Username"), max_length=30, 
                               widget=forms.TextInput(attrs={'class': 'loginput'}))

и передайте эту форму в дополнительном контексте на адрес для входа в систему:

(r'^accounts/login/$', 'django.contrib.auth.views.login',
      {'template_name': 'myapp/login.html', 'authentication_form': LoginForm}),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...