Формы
Перед тем как писать представления, нам нужно создать некоторые формы. Для этого создадим файл forms.py
в нашем приложении.
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
class RegistrationForm(UserCreationForm):
class Meta:
model = User
fields = ("last_name", "first_name", "username", "email", "password1", "password2")
last_name = forms.CharField(label="Фамилия", required=True)
first_name = forms.CharField(label="Имя", required=True)
email = forms.EmailField(required=True)
def save(self, commit=True):
user = super(RegistrationForm, self).save(commit=False)
user.last_name = self.cleaned_data["last_name"]
user.first_name = self.cleaned_data["first_name"]
user.email = self.cleaned_data["email"]
if commit:
user.save()
return user
В Django уже существует встроенная форма для регистрации новых пользователей - UserCreationForm
. Но она состоит
только из 3 полей: никнейм, пароль и подтверждение пароля.
Создадим новый класс, наследуя эту форму.
В мета-классе напишем, что форма будет основана на модели auth.models.User
и перечислим необходимые нам поля:
фамилия, имя, никнейм, почта, пароль и подтверждение пароля.
Напишем, какие виджеты хотим использовать для наших новый полей и пометим их обязательными.
Переопределим метод save
. В начале вызовем метод save
из наследуемого класса, но пометим его как commit=False
,
чтобы не отправлять запрос в БД. Получим из словаря cleaned_data
(данные, прошедшие валидации) значения наших новых полей
и присвоим их атрибутам нашего нового объекта. Сохраним объект и вернём его.