[PYTHON] Implementieren Sie ein benutzerdefiniertes Benutzermodell in Django

Einführung

Legen Sie das benutzerdefinierte Benutzermodell in Django fest.

Dieser Artikel ist Teil des Projekts Auf Docker aufbauen und auf AWS Fargate bereitstellen.

Gründe für die Verwendung des benutzerdefinierten Benutzermodells

Standardmäßig ist für Django ein Benutzermodell festgelegt. Wenn Sie jedoch tatsächlich eine App erstellen, gibt es immer Zeiten, in denen Sie das Benutzermodell an die von Ihnen erstellte App anpassen möchten. Es ist sehr schwierig, das Benutzermodell nach einigen Codierungsvorgängen zu ändern. Es wird daher empfohlen, das benutzerdefinierte Benutzermodell zu Beginn des Projekts festzulegen.

Informationen zur Implementierung des benutzerdefinierten Benutzermodells

Verwenden Sie zum Implementieren des benutzerdefinierten Benutzermodells die Klasse "AbstractUser" oder die Klasse "AbstractBaseUser". Die "AbstractUser" -Klasse ist eine einfache Möglichkeit, die Standardbenutzerfelder und die Authentifizierung zu erweitern. Die Methode zur Verwendung der Klasse "AbstractBaseUser" erhöht den Codierungsaufwand, kann jedoch detaillierter angepasst werden.

Dieses Mal werden wir es mit "Abstract User" implementieren. Ich habe auch "Abstract User" verwendet, um das Benutzermodell in den Projekten anzupassen, an deren Entwicklung ich beteiligt war. Für die allgemeine Benutzerverwaltung ist "Abstrakter Benutzer" ausreichend.

Vorbereitung

Implementieren Sie das benutzerdefinierte Benutzermodell in dem Projekt, das in Verwenden von PostgreSQL mit Docker + Django erstellt wurde.

Benutzer-App hinzufügen

Erstellen Sie zunächst eine Benutzer-App, die benutzerdefinierte Benutzer mit dem Befehl startapp verwaltet. Fügen Sie dann den Code für das benutzerdefinierte Benutzermodell zu settings.py hinzu.

docker-compose exec web python manage.py startapp users

Fügen wir die erstellten Benutzer zu settings.py hinzu. Geben Sie am Ende außerdem an, dass anstelle des Standardbenutzermodells ein benutzerdefiniertes Benutzermodell verwendet wird.

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', #hinzufügen
]
...
AUTH_USER_MODEL = 'users.CustomUser' #hinzufügen

Benutzerdefinierten Benutzer zum Modell hinzufügen

Erstellen Sie eine CustomUser-Klasse in models.py. Dieses Mal werden keine Felder aus dem Standardbenutzermodell hinzugefügt. Fügen Sie daher den Pass direkt darunter hinzu. Wenn Sie ein eigenes Feld festlegen möchten, fügen Sie das Feld hier hinzu.

users/models.py


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

class CustomUser(AbstractUser):
    pass

Benutzerdefinierte Benutzerformulare erstellen

Erstellen Sie users / forms.py und fügen Sie den folgenden Code hinzu.

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',)

Benutzerdefinierte Benutzeradministrationseinstellungen

Fügen Sie admin.py den folgenden Code hinzu.

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)

Damit sind die Einstellungen abgeschlossen. Lassen Sie uns zum Schluss migrieren.

docker-compose exec web python manage.py makemigrations users
docker-compose exec web python manage.py migrate

Recommended Posts

Implementieren Sie ein benutzerdefiniertes Benutzermodell in Django
Implementieren Sie einen benutzerdefinierten View Decorator mit Pyramid
Modelländerungen in Django
Was ist ein Hund? Django - Erstellen Sie ein benutzerdefiniertes Benutzermodell 2
Implementierung der benutzerdefinierten Authentifizierungsfunktion für Benutzermodelle in Django REST Framework mit djoser
Implementieren Sie die Follow-Funktion in Django
Verwendung von Fixture in Django zur Eingabe von Beispieldaten für das Benutzermodell
Benutzer wird nach dem Erstellen eines benutzerdefinierten Benutzermodells nicht erfolgreich hinzugefügt
Implementieren Sie einen Datumssetzer in Tkinter
Implementieren Sie die Django-App auf Hy
[Mein Memo] Djangos benutzerdefiniertes Benutzermodell
Benutzerdefiniertes Zustandsraummodell in Python
Erstellen Sie mit Django einen LINE-Bot
Installieren Sie Django in einer virtuellen Pipenv-Umgebung
Django: Die Migration spiegelt nicht das Modell in der Datenbank wider
Verwenden Sie ein in PySpark geschultes Scikit-Lernmodell
Erstellen Sie ein Modell für Ihren Django-Zeitplan
Summe der Variablen in einem mathematischen Modell
Implementieren Sie den GraphGatherLayer von DeepChem mit der benutzerdefinierten Ebene von PyTorch
Geben Sie das ModelChoiceField-Abfrageset in Django dynamisch an
Holen Sie sich ein Referenzmodell mit Django Serializer
Implementieren Sie ein Modell mit Status und Verhalten
So implementieren Sie Rails-Helfer-ähnliche Funktionen in Django
Django-Modell: ManyToManyField
Modell in Django
Starten Sie Django in einer virtuellen Umgebung mit Pipenv
Wenn Sie den Wert mithilfe von Auswahlmöglichkeiten in der Vorlage im Django-Modell anzeigen möchten
Aktivieren Sie Django https in nur wenigen Zeilen
Erstellen Sie mit Vagrant in 5 Minuten eine Django-Umgebung
So implementieren Sie eine Verlaufsauswahl in Houdini
Implementieren Sie Custom Authorizer für die Firebase-Authentifizierung in Chalice
Ich habe versucht, TOPIC MODEL in Python zu implementieren
Senden Sie eine E-Mail mit einem anderen Benutzer als EMAIL_HOST_USER, der in den Einstellungen in Django geschrieben wurde
Erstellen Sie in Python ein einfaches Momentum-Investmentmodell
Übergeben Sie Login-Benutzerinformationen, um sie in Django anzuzeigen
Verwenden Sie eine benutzerdefinierte Fehlerseite mit Python / Tornado
Konfigurieren Sie ein Modul mit mehreren Dateien in Django
Implementieren Sie mit stan ein zeitdiskretes logistisches Regressionsmodell
So erstellen Sie eine Rest-API in Django
Bis Sie eine neue App in Django erstellen
Form in Django
Ich möchte Timeout einfach in Python implementieren
So erhalten Sie mehrere Modellobjekte zufällig in Django
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Implementieren Sie die Django-Benutzererweiterung und registrieren Sie die angehängten Informationen
[Django] Implementieren Sie eine Funktion zum Hochladen von Bilddateien, die kein Modell verwendet
So verweisen Sie auf statische Dateien in einem Django-Projekt
[Django] Geben Sie Form einen dynamischen Anfangswert aus Model
Implementieren Sie hierarchische URLs mit drf-verschachtelten Routern im Django REST-Framework
Erstellen Sie einen Django-Zeitplan
Django recherchierte über Benutzerverwaltung
Implementieren Sie XENO mit Python
So erstellen Sie einen Datensatz, indem Sie eine Beziehung zum geerbten Modell in das von Django geerbte Modell einfügen
diktieren in diktieren Macht ein Diktat ein Diktat
Eine Geschichte, die das Debuggen von Modellen in der Django + SQLAlchemy-Umgebung einfacher macht
[Django] Feldnamen, die für das Benutzermodell, die Benutzerregistrierung und die Anmeldemethoden verwendet werden können
Benutzerdefinierte Sortierung in Python3
Implementieren Sie sum in Python