Сегодня я сделал нечто, что действительно меня порадовало. Я смог добавить кастомные поля в форму регистрации на сайте 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.