[PYTHON] Implementierung der Login-Funktion in Django

Dies ist mein Memorandum. Ich habe viel für meine eigene Studie recherchiert, aber da es viele Erklärungen für Version 2 usw. gab, war es kompliziert, daher werde ich es bis zu einem gewissen Grad zusammenfassen. Ich schreibe es in der Hoffnung, dass es für diejenigen von Nutzen ist, die auf ähnliche Probleme gestoßen sind. Bitte mit warmen Augen beobachten! (Bitte zögern Sie nicht, Korrekturen vorzunehmen)

Sie können die meisten Dinge verstehen, indem Sie ein Tutorial durchführen (entsprechend). https://docs.djangoproject.com/ja/3.1/intro/tutorial01/


Nutzungsumgebung
・ Betriebssystem ... Windows10 ・ Python ... 3.7.6 ・ Django ... 3.1.3

Umgebungskonstruktion Sie können Python lokal installieren, aber unter Berücksichtigung der Paketverwaltung usw. ist es besser, Anaconda zu verwenden? Wenn Sie sich hier umschauen, werden Sie viel finden, also lassen Sie uns durchgehen.

Es tut mir leid, wenn es ein Versehen gibt. Das Paket ist wahrscheinlich

pip install django
pip install pillow

Es hätte nur ... sein sollen! !!

Let's Start Project!!

Dieser Bereich ist auch ein Tutorial, ...

Ich werde hauptsächlich dort schreiben, wo ich von hier aus gestolpert bin.

Implementierung um Login Django wird standardmäßig mit einer Admin-Site geliefert. Wenn Sie eine eigene Blog-Site usw. erstellen, empfiehlt es sich, diesen Verwaltungsbildschirm zu verwenden. Was ich tun wollte war
  1. Jeder kann ein Konto erstellen
  2. Erstellen Sie meine Seite für jeden Benutzer

Ich wollte die Funktion implementieren, also habe ich meine eigene Anmeldefunktion erstellt. Als Fluss

    1. Erstellen einer App, die die Anmeldeverarbeitung mit dem Befehl start app ausführt
  1. Definieren Sie Benutzerinformationen in Model (erben Sie AbstractUser).
  2. Erstellen Sie mit LoginView und LogoutView eine Ansicht zum An- und Abmelden
  3. Für die Neuregistrierung ist View nicht vorhanden, sodass Sie Ihre eigene Methode verwenden können.
  4. Modell und Ansicht in Formular zuordnen Ich fuhr mit dem obigen Gefühl fort.

2:

model.py


class User(AbstractUser):
    pass

Und gerade AbstractUser geerbt. Im offiziellen Dokument heißt es vorerst, dass Sie Ihre eigenen durch Überschreiben erstellen sollten. Sie können Ihre Lieblingsspalten hinzufügen, indem Sie sie hier bearbeiten. [Siehe Abstract User] https://docs.djangoproject.com/en/3.1/topics/auth/customizing/

3: Ich dachte an die folgenden Optionen als Methode zur Implementierung der Anmelde- und Abmeldefunktionen.

view.py


from django.contrib.auth import authenticate, login

def my_view(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(request, username=username, password=password)
    if user is not None:
        login(request, user)
        # Redirect to a success page.
        ...
    else:
        # Return an 'invalid login' error message.
        ...

ebenso gut wie

Methode mit Ansicht Referenzquelle: https://docs.djangoproject.com/ja/3.1/topics/auth/default/

Da die Menge an Code bei Verwendung von View reduziert wird, habe ich ihn hier implementiert, aber es scheint, dass die Methode, die intuitiv leicht zu verstehen ist, die Verarbeitungsmethode innerhalb der vorherigen Methode ist. Überprüfen Sie bei Verwendung von Ansicht unbedingt die darin enthaltenen Variablen. Die Ursachen für nutzlosen Code und Fehler sind relativ aufgelistet. Diesmal ist Form die Standardeinstellung, da es verwendet wird, wenn ein Klassenname in HTML angegeben wird. Ich bearbeite nur Vorlagenname und erbe den Rest so wie er ist. Das Abmelden wird auf die gleiche Weise implementiert, sodass es weggelassen wird.

4: Der neue Registrierungsbildschirm stolperte am meisten. Ich werde aus der Schlussfolgerung schreiben.

view.py


def signup(request):
    if request.method == 'POST':
        form = UserCreateForm(request.POST)
        if form.is_valid():
            form.save()
        else:
            print(form.errors)
        return redirect('/login')
    return render(request, 'loginauth/create_user.html')

def redirect_view(request):
    response = redirect('/login')
    return response

forms.py


class UserCreateForm(UserCreationForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['username'].widget.attrs['class'] = 'form-control'
        self.fields['password1'].widget.attrs['class'] = 'form-control'
        self.fields['password2'].widget.attrs['class'] = 'form-control'
        self.fields['email'].widget.attrs['class'] = 'form-control'

    class Meta:
       model = User
       fields = ("username", "password1","password2", "email",)

Es ist wie es ist. Ich werde es ergänzen.

Der komplizierteste Teil persönlich Views.py `form = UserCreateForm (request.POST)` war. Um kurz zusammenzufassen, was Sie tun Es gibt ein Formular zum Erstellen eines Benutzers mit dem Namen UserCreationForm. Modell festlegen: Benutzer und Felder im Formular. Extrahieren Sie den Inhalt von views.py, der mit Feldern aus request.POST übereinstimmt, und überprüfen Sie, ob Kennwort1 und 2 mit form.is_valid () übereinstimmen. Wenn sie übereinstimmen, speichern Sie sie wie sie sind.

Es ist ein Fluss. Referenzquelle: https://docs.djangoproject.com/ja/3.1/topics/auth/default/ https://docs.djangoproject.com/ja/3.1/topics/auth/default/#django.contrib.auth.forms.UserCreationForm Wenn Sie hier herumlesen, können Sie sehen, wie man es schreibt.

Schlussfolgerung Sie können es normalerweise lösen, indem Sie das Dokument lesen. Dann müssen Sie sich bemühen, es zu interpretieren Zu diesem Zweck müssen wir die Verarbeitung verstehen, die im Inhalt der Verpackung usw. ausgeführt wird! !! !! !! Übrigens weiß ich es noch gar nicht, deshalb lese ich den Inhalt jedes Mal, wenn ich Zeit habe. Wenn Sie sich die Methoden und Klassenvariablen ansehen, wenn Sie nicht weiterkommen, gibt es viele Hinweise, daher wird dies empfohlen

Recommended Posts

Implementierung der Login-Funktion in Django
Implementierung der schnellen Sortierung in Python
Einführung und Implementierung der Aktivierungsfunktion
Einfache Implementierung der Kreditkartenzahlungsfunktion mit PAY.JP [Django]
Implementierung eines Lebensspiels in Python
Implementierung der ursprünglichen Sortierung in Python
Implementierung der Like-Schaltfläche in Django + Ajax
Django Blog auf Heroku: Login Implementierung
Implementierung der JWT-Authentifizierungsfunktion in Django REST Framework mit djoser
Es ist eine Implementierung von ConnectionPool in redis.py
Unterschied in der Ausgabe der Fensterfunktion mit gerader Länge
Hallo Welt nicht localhost in Django
Implementierung der asynchronen Verarbeitung in Django (Sellerie, Redis)
Implementierung der benutzerdefinierten Authentifizierungsfunktion für Benutzermodelle in Django REST Framework mit djoser
Dualität in der Funktion
[Unity (C #), Python] Memo zur API-Kommunikationsstudie ③ Implementierung einer vereinfachten Anmeldefunktion
Form in Django
Die Funktion _authenticate_with_backend wurde in django auth.autenticate nicht mehr unterstützt
Zeichnen Sie in Python ein Diagramm einer quadratischen Funktion
Korrigieren Sie die Argumente der in map verwendeten Funktion
Fehlermeldung anzeigen, wenn die Anmeldung in Django fehlschlägt
Gacha geschrieben in Python-Addition der Periodeneinstellungsfunktion-
Übergeben Sie Login-Benutzerinformationen, um sie in Django anzuzeigen
Die Geschichte der Anzeige von Mediendateien in Django
Implementieren Sie die JWT-Anmeldefunktion im Django REST-Framework
Erläuterung der Bearbeitungsentfernung und Implementierung in Python
Überprüfung der Paging-Implementierung nach Relay-Stil in GraphQL (Version mit Fensterfunktion)
Dies ist ein Beispiel für eine Funktionsanwendung im Datenrahmen.
Funktionen parallel ausführen
Höchstwahrscheinlich Schätzungsimplementierung des Themenmodells in Python
RNN-Implementierung in Python
ValueObject-Implementierung in Python
Implementierung des Dropdown-Menüs in Django
Generatorfunktion auch in JavaScript
Eindrücke, Django zu berühren
Über das Testen bei der Implementierung von Modellen für maschinelles Lernen
[Cinema 4D] -Funktion zum Überprüfen aller Objekte in der Szene
Implementierung der Fibonacci-Sequenz
Modelländerungen in Django
DataNitro, Implementierung einer Funktion zum Lesen von Daten aus dem Blatt
Implementierung der Bayes'schen Varianzschätzung des Themenmodells in Python
Ein Memorandum über die Umsetzung von Empfehlungen in Python
SVM-Implementierung in Python
Erläuterung zum NoReverseMatch-Fehler in "Python Django Super Introduction"
Funktion von NumPy einstellen
Ich habe an der Übersetzungsaktivität des offiziellen Django-Dokuments teilgenommen
Wartung der Django + MongoDB-Entwicklungsumgebung (mitten im Schreiben)
Lassen Sie das Gleichungsdiagramm der linearen Funktion in Python zeichnen
Zusammenfassung der Stolperpunkte in Django zum ersten Mal
Ein Memo, dass ich eine Grundfunktion in Python mit Wiederholung geschrieben habe
Machen Sie die Funktion zum Zeichnen japanischer Schriftarten in OpenCV allgemein
Django Geändert, um viele Daten gleichzeitig zu speichern
Erläuterung der CSV und Implementierungsbeispiel in jeder Programmiersprache
Leistungsoptimierung in Django 3.xx.
Quantum Computer Implementierung von Quantum Walk 2
PHP var_dump-like in Django-Vorlage
Behandeln Sie Konstanten in Django-Vorlagen
Implementieren Sie die Anmeldefunktion mit django-allauth