Найти в Дзене
Маленький человек

CustomUser(AbstractUser)

Простая пользовательская модель User Models from django.db import models
from django.contrib.auth.models import AbstractUser
class MyUser(AbstractUser):
patronymic = models.CharField(max_length=50, blank=True, null=True)
gender = models.BooleanField(default=False)
birthDate = models.DateField(blank=True, null=True) Views from django.contrib.auth.views import LoginView, LogoutView
from django.urls import reverse_lazy
from django.views.generic import CreateView
from .forms import MyUserRegisterForm, MyUserLoginForm
from .models import MyUser
class MyUserRegisterView(CreateView):
model = MyUser
form_class = MyUserRegisterForm
template_name = 'customUsers/register.html'
success_url = reverse_lazy('register')
class MyUserLogoutView(LogoutView):
next_page = reverse_lazy('register')
class MyUserLoginView(LoginView):
model = MyUser
form_class = MyUserLoginForm
template_name = 'customUsers/login.html'
success_url = reverse_lazy('register'
Оглавление

Простая пользовательская модель User

Models

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


class MyUser(AbstractUser):
patronymic = models.CharField(max_length=50, blank=True, null=True)
gender = models.BooleanField(default=False)
birthDate = models.DateField(blank=True, null=True)

Views

from django.contrib.auth.views import LoginView, LogoutView
from django.urls import reverse_lazy
from django.views.generic import CreateView

from .forms import MyUserRegisterForm, MyUserLoginForm
from .models import MyUser


class MyUserRegisterView(CreateView):
model = MyUser
form_class = MyUserRegisterForm
template_name = 'customUsers/register.html'
success_url = reverse_lazy('register')


class MyUserLogoutView(LogoutView):
next_page = reverse_lazy('register')


class MyUserLoginView(LoginView):
model = MyUser
form_class = MyUserLoginForm
template_name = 'customUsers/login.html'
success_url = reverse_lazy('register')

def get_success_url(self):
return self.success_url

Forms

from django import forms
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from .models import MyUser

class DateInput(forms.DateInput):
input_type = 'date

class MyUserRegisterForm(UserCreationForm):
username = forms.CharField(widget=forms.TextInput(
attrs={'class': 'form-control'}))
email = forms.CharField(widget=forms.TextInput(
attrs={'class': 'form-control'}))
password1 = forms.CharField(widget=forms.PasswordInput(
attrs={'class': 'form-control'}))
password2 = forms.CharField(widget=forms.PasswordInput(
attrs={'class': 'form-control'}))
last_name = forms.CharField(widget=forms.TextInput(
attrs={'class': 'form-control'}))
first_name = forms.CharField(widget=forms.TextInput(
attrs={'class': 'form-control'}))
patronymic = forms.CharField(widget=forms.TextInput(
attrs={'class': 'form-control'}))
birthDate = forms.CharField(widget=
DateInput(
attrs={'class': 'form-control'}))

class Meta:
model = MyUser
fields = ('username', 'email', 'password1', 'password2',
'last_name', 'first_name', 'patronymic', 'gender', 'birthDate',)

class MyUserLoginForm(AuthenticationForm, forms.ModelForm):
username = forms.CharField(widget=forms.TextInput(
attrs={'class': 'form-control'}))
password = forms.CharField(widget=forms.PasswordInput(
attrs={'class': 'form-control'}))

class Meta:
model = MyUser
fields = ('username', 'password')

Urls

from django.urls import path
from .views import *

urlpatterns = [
path('', MyUserRegisterView.as_view(), name='register'),
path('login/', MyUserLoginView.as_view(), name='login'),
path('logout', MyUserLogoutView.as_view(), name='logout'),
]

Admin

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import MyUser


class MyUserAdmin(UserAdmin):
model = MyUser

fieldsets = (
*UserAdmin.fieldsets,
( 'User role', { 'fields': (
'patronymic',
'gender',
'birthDate',)} ))
admin.site.register(MyUser, MyUserAdmin)

Settings

AUTH_USER_MODEL = 'customUsers.MyUser'

где:
MyUser - это новое название User
customUsers - название приложения

Список всех моих статей в оглавлении.