Django super Einführung von Python-Anfängern! Teil 6 Ich habe versucht, die Login-Funktion zu implementieren

Über diesen Artikel

Dies ist die Ausgabeseite des Ergebnisses des Lernens über Django bei Udemy. Der vorherige Artikel ist hier .

Dieses Mal implementieren wir die Anmeldefunktion in der zuletzt erstellten Tagebuchanwendung.

Ergebnisse

TOP-Seite vor dem Login (Liste und Login werden in der Navigationsleiste angezeigt.)

TOP-Seite nach dem Anmelden (Liste, Hinzufügen und Abmelden werden in der Navigationsleiste angezeigt.)

Anmeldebildschirm

Abmeldebildschirm

settings.py Fügen Sie LOGIN_URL zu settings.py hinzu. Dieses Mal wird der Anmeldebildschirm der Admin-Site verwendet. Verwenden Sie also admin: login. Fügen Sie settings.py den folgenden Code hinzu.

settings.py


LOGIN_URL = 'admin:login'

views.py Dieses Mal möchte ich die Seite zum Hinzufügen / Aktualisieren / Löschen so steuern, dass eine Anmeldung erforderlich ist.

Bearbeiten Sie zuerst views.py. Importieren Sie LoginRequiredMixin. Erben Sie dann "LoginRequiredMixin" an die Klasse, bei der Sie sich anmelden möchten. Dies ist alles, was Sie tun müssen, um die Anmeldefunktion zu implementieren. Der Rest ist die HTML-Bearbeitung.

views.py


from django.contrib.auth.mixins import LoginRequiredMixin
from django.shortcuts import render, redirect, get_object_or_404
from .forms import DayCreateForm
from .models import Day
from django.views import generic
from django.urls import reverse_lazy

class IndexView(generic.ListView):
    model = Day
    paginate_by = 3

class DayCreateView(LoginRequiredMixin, generic.CreateView):
    model = Day
    form_class = DayCreateForm
    success_url = reverse_lazy('diary:index')

class DayUpdateView(LoginRequiredMixin, generic.UpdateView):
    #Es hat fast den gleichen Inhalt wie CreateView, übergibt jedoch nicht nur das Formular, sondern auch das Day-Objekt.
    model = Day
    form_class = DayCreateForm
    success_url = reverse_lazy('diary:index')

class DayDeleteView(LoginRequiredMixin, generic.DeleteView):
    model = Day
    success_url = reverse_lazy('diary:index')

class DayDetailView(generic.DetailView):
    model = Day

Base.html bearbeiten

Als nächstes folgt die HTML-Bearbeitung.

Wenn Sie etwas erst nach dem Anmelden anzeigen möchten, können Sie dies tun, indem Sie es in die folgende if-Anweisung einfügen. {% if user.is_superuser%} Was Sie nach der Anmeldung sehen möchten {% endif%}

Wenn Sie wie folgt schreiben, werden das Hinzufügen und Abmelden nach dem Anmelden angezeigt. Die Anmeldung wird vor der Anmeldung angezeigt.

Wenn Sie target = "_ blank" setzen, wird Login / Logout in einer separaten Registerkarte geöffnet.

base.html


    <div class="container">
      <nav class="nav">
        <a class="nav-link active" href="{% url 'diary:index' %}">Aufführen</a>
        {% if user.is_superuser %}
        <a class="nav-link" href="{% url 'diary:add' %}">hinzufügen</a>
        <a class="nav-link" href="{% url 'admin:logout' %}" target="_blank">Ausloggen</a>        
        {% else %}
        <a class="nav-link" href="{% url 'admin:login' %}" target="_blank">Einloggen</a>        
        {% endif %}
      </nav>
      {% block content %}
      {% endblock %}
    </div>

Funktionsprüfung

Überprüfen Sie den Vorgang mit py manage.py runserver. Wenn Sie auf die Schaltfläche Aktualisieren / Löschen klicken, werden Sie zum Anmeldebildschirm weitergeleitet.

Recommended Posts

Django super Einführung von Python-Anfängern! Teil 6 Ich habe versucht, die Login-Funktion zu implementieren
Django super Einführung von Python-Anfängern! Teil 3 Ich habe versucht, die Vererbungsfunktion für Vorlagendateien zu verwenden
Django super Einführung von Python-Anfängern! Teil 2 Ich habe versucht, die praktischen Funktionen der Vorlage zu nutzen
Django super Einführung von Python-Anfängern! Teil 1 Ich habe versucht, eine HTML-Seite anzuzeigen, auf der nur "Hallo Welt" steht.
Django super Einführung von Python-Anfängern! Teil 5 Ich habe eine supereinfache Tagebuchanwendung mit einer klassenbasierten Allzweckansicht erstellt
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
Django super Einführung von Python-Anfängern! Teil 4 Ich habe eine supereinfache Tagebuchanwendung erstellt (nur mit Funktionen erstellt, ohne klassenbasierte Allzweckansichten zu verwenden).
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
[Python] Ich habe versucht, den Typnamen als Zeichenfolge aus der Typfunktion abzurufen
Einführung in die KI-Erstellung mit Python! Teil 2 Ich habe versucht, den Hauspreis in Boston mit einem neuronalen Netz vorherzusagen
[Einführung] Ich habe versucht, es selbst zu implementieren, während ich den Dichotomiebaum erklärte
[Einführung] Ich habe versucht, es selbst zu implementieren, während ich erklärte, um die Dichotomie zu verstehen
Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren
[Django] Ich habe versucht, Zugriffsbeschränkungen durch Klassenvererbung zu implementieren.
Ich habe versucht, eine RESTful-API zu erstellen, indem ich die explosive Fast-API des Python-Frameworks mit MySQL verbunden habe.
Ich habe auch versucht, die Funktionsmonade und die Zustandsmonade mit dem Generator in Python nachzuahmen
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
[Einführung in Python] So teilen Sie eine Zeichenfolge mit der Funktion split
[Python] Ich habe versucht, eine stabile Sortierung zu implementieren
[Einführung in die Simulation] Ich habe versucht, durch Simulation einer Koronainfektion zu spielen ♬ Teil 2
Ich habe versucht, ein missverstandenes Gefangenendilemma in Python zu implementieren
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Ich habe versucht, PLSA in Python zu implementieren
Ich habe versucht, Permutation in Python zu implementieren
Python Bit Arithmetic Super Einführung
Ich habe versucht, PLSA in Python 2 zu implementieren
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, PPO in Python zu implementieren
Ich habe versucht, mit einem Remote-Server über Socket-Kommunikation mit Python zu kommunizieren.
Ich habe versucht, die Bayes'sche lineare Regression durch Gibbs-Sampling in Python zu implementieren
Ich habe versucht, die Beschleunigung von Python durch Cython zu verifizieren und zu analysieren
[Einführung in Python] So schreiben Sie eine Zeichenfolge mit der Formatierungsfunktion
Ich habe versucht, das Ergebnis des A / B-Tests mit dem Chi-Quadrat-Test zu überprüfen
Python: Ich möchte die Verarbeitungszeit einer Funktion genau messen
Ich habe versucht, die Neujahrskarte selbst mit Python zu analysieren
Ich habe versucht, Trumps Kartenspiel in Python zu implementieren
Ich habe eine Funktion erstellt, um die Bewegung eines zweidimensionalen Arrays (Python) zu sehen.
[Python] Ich habe versucht, den Funktionsnamen durch den Funktionsnamen zu ersetzen
Ich habe versucht, TOPIC MODEL in Python zu implementieren
Ich habe versucht, das Datetime-Modul von Python zu verwenden
Ich habe versucht, eine selektive Sortierung in Python zu implementieren
Ich habe versucht, das Problem des Handlungsreisenden umzusetzen
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 5/22]
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 7/22]
[Python] Deep Learning: Ich habe versucht, Deep Learning (DBN, SDA) ohne Verwendung einer Bibliothek zu implementieren.
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 4/22]
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 3/22].
[Python] Smasher hat versucht, den Video-Ladevorgang mithilfe eines Generators zu einer Funktion zu machen
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 1/22]
Ich habe versucht, ein scheinbar Windows-Snipper-Tool mit Python zu implementieren
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 6/22]
[Einführung in Docker] Ich habe versucht, verschiedene Docker-Kenntnisse zusammenzufassen, die durch das Studium gewonnen wurden (Windows / Python).
Einführung in die KI-Erstellung mit Python! Teil 3 Ich habe versucht, Bilder mit einem Convolutional Neural Network (CNN) zu klassifizieren und vorherzusagen.
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Ich möchte Timeout einfach in Python implementieren
[Einführung in Python] Wie iteriere ich mit der Bereichsfunktion?
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Ich habe versucht, eine CSV-Datei mit Python zu berühren