Найти тему

Как я добавил кастомные поля в форму регистрации Django

Оглавление

Сегодня я сделал нечто, что действительно меня порадовало. Я смог добавить кастомные поля в форму регистрации на сайте Django. Вот как я это сделал, и, возможно, это поможет кому-то, кто тоже учится работать с Django.

Шаг 1: Обновляем модель пользователя

Сначала я добавил новое поле в модель пользователя. Это поле нужно для того, чтобы пользователи могли вводить дополнительную информацию. В моем случае, это было поле для названия курса.

В файле models.py я добавил следующее:

from django.contrib.auth.models import AbstractUser
from django.db import models

class AccountRegister(AbstractUser):
courses = models.CharField(verbose_name='Название курса', max_length=250, null=True, blank=True)
Здесь я создал поле courses, которое позволяет пользователю вводить название курса.

Шаг 2: Создаем и применяем миграции

Теперь нужно обновить базу данных, чтобы она знала о новом поле. Для этого я создал миграции и применил их:

poetry run python manage.py makemigrations account
poetry run python manage.py migrate
Эти команды создали и применили миграции, чтобы база данных обновилась и включила новое поле.

Шаг 3: Обновляем форму регистрации

Следующий шаг — обновить форму регистрации, чтобы она включала новое поле. В файле forms.py я добавил следующее:

В этой форме я добавил поле courses, чтобы пользователи могли его заполнить при регистрации.

Шаг 4: Обновляем представление

Наконец, я обновил представление, чтобы использовать новую форму. В views.py теперь выглядит так:

from django.shortcuts import render, redirect
from django.contrib.auth import login
from django.views.generic.edit import CreateView
from .forms import AccountRegisterForm

class AccountRegisterView(CreateView):
form_class = AccountRegisterForm
template_name = 'account/form-register.html'

def form_valid(self, form):
user = form.save()
login(self.request, user)
return redirect('home')

Теперь, когда пользователь регистрируется, форма отображает и обрабатывает новое поле courses.

Заключение

Это был мой первый опыт добавления кастомных полей в форму регистрации. На самом деле, это было не так сложно, как я думал в начале. Главное — следовать шаг за шагом, и всё получится. Надеюсь, что этот опыт будет полезен тем, кто тоже учится работать с Django.