Для расширения формы авторизации в Django можно использовать несколько подходов. Один из самых простых — создать собственную форму на основе уже существующей формы авторизации Django и добавить в нее необходимые поля.
Вот пример:
from django.contrib.auth.forms import AuthenticationForm from django import forms class ExtendedAuthenticationForm(AuthenticationForm): # Добавляем новое поле для ввода email = forms.EmailField() # Можно добавить дополнительные поля по аналогии def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # Переопределяем отображаемое имя поля self.fields['username'].label = 'Username or Email' # Переопределяем метод clean для обработки нового поля def clean(self): cleaned_data = super().clean() # Присваиваем значение email из поля username email = cleaned_data.get('username') cleaned_data['email'] = email return cleaned_data
В этом примере мы создаем класс ExtendedAuthenticationForm
, наследуясь от AuthenticationForm
. Затем добавляем новое поле email
типа EmailField
. В __init__
мы переопределяем отображаемое имя поля username
для вывода в HTML-форме. В методе clean
мы присваиваем значение введенное в поле username
значению поля email
.
Чтобы использовать расширенную форму авторизации, вам нужно указать ее в настройках Django в settings.py
:
AUTHENTICATION_FORM = 'myapp.forms.ExtendedAuthenticationForm'
Где 'myapp.forms.ExtendedAuthenticationForm'
— это путь к вашему классу формы.
Если вы хотите добавить дополнительные поля или изменить внешний вид формы с помощью определенного CSS или HTML, то вам также потребуется создать соответствующий шаблон (template) и включить его в вашу HTML-страницу.
В общем, расширение форм авторизации Django дает вам гибкость добавлять и настраивать поля формы и их обработку в зависимости от ваших потребностей.