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.