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.
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.
LoginRequiredMixin
vor Klassen wie ListView. Ein Fehler wird auftreten.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
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>
Ü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.