Définissez le modèle utilisateur personnalisé dans Django.
Cet article fait partie du projet Build on Docker and Deploy to AWS Fargate.
Par défaut, Django a un ensemble de modèles utilisateur. Cependant, lorsque vous créez réellement une application, il y aura toujours des moments où vous souhaiterez modifier le modèle utilisateur pour qu'il corresponde à l'application que vous avez créée. Comme il est très difficile de modifier le modèle utilisateur une fois que le codage a progressé dans une certaine mesure, il est recommandé de définir le modèle utilisateur personnalisé dès le début du projet.
Pour implémenter le modèle utilisateur personnalisé, utilisez la classe "AbstractUser" ou la classe "AbstractBaseUser". La classe "AbstractUser" est un moyen simple d'étendre les champs utilisateur par défaut et l'authentification. La méthode d'utilisation de la classe "AbstractBaseUser" augmente la quantité de codage, mais elle peut être personnalisée plus en détail.
Cette fois, nous allons l'implémenter en utilisant "Abstract User". J'ai également utilisé "Abstract User" pour personnaliser le modèle utilisateur dans les projets que j'ai participé au développement. Si vous souhaitez gérer des utilisateurs généraux, "Utilisateur abstrait" suffit.
Implémentez le modèle utilisateur personnalisé dans le projet créé dans Utilisation de PostgreSQL avec Docker + Django.
Tout d'abord, créez une application d'utilisateurs qui gère les utilisateurs personnalisés avec la commande startapp. Ajoutez ensuite le code associé au modèle utilisateur personnalisé à setting.py.
docker-compose exec web python manage.py startapp users
Ajoutons les utilisateurs créés à setting.py. En outre, à la fin, indiquez qu'un modèle utilisateur personnalisé sera utilisé à la place du modèle utilisateur par défaut.
setting.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# Local
'users.apps.UsersConfig', #ajouter à
]
...
AUTH_USER_MODEL = 'users.CustomUser' #ajouter à
Créez une classe CustomUser dans models.py. Cette fois, nous n'ajouterons pas de champs à partir du modèle utilisateur par défaut, donc ajoutez une passe directement en dessous. Si vous souhaitez définir votre propre champ, veuillez ajouter le champ ici.
users/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
pass
Créez users / forms.py et ajoutez le code suivant.
users/form.py
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm):
model = get_user_model()
fields = ('email', 'username',)
class CustomUserChangeForm(UserChangeForm):
class Meta(UserChangeForm):
model = get_user_model()
fields = ('email', 'username',)
Ajoutez le code suivant à admin.py.
users/admin.py
from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin
from .forms import CustomUserCreationForm, CustomUserChangeForm
CustomUser = get_user_model()
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
form = CustomUserChangeForm
model = CustomUser
list_display = ['email', 'username',]
admin.site.register(CustomUser, CustomUserAdmin)
Ceci termine les réglages. Enfin, migrons.
docker-compose exec web python manage.py makemigrations users
docker-compose exec web python manage.py migrate
Recommended Posts