Voici la page de sortie du résultat de l'apprentissage de Django chez Udemy. L'article précédent est ici .
Cette fois, nous allons implémenter la fonction de connexion dans l'application de journal créée la dernière fois.
settings.py Ajoutez LOGIN_URL à settings.py. Cette fois, l'écran de connexion du site d'administration sera utilisé, alors utilisons admin: login. Ajoutez le code suivant à settings.py.
settings.py
LOGIN_URL = 'admin:login'
views.py Cette fois, je voudrais contrôler la page d'ajout / mise à jour / suppression afin qu'elle nécessite une connexion.
Commencez par modifier views.py.
Importez LoginRequiredMixin ''. Ensuite, héritez de
LoginRequiredMixin '' à la classe à laquelle vous souhaitez vous connecter.
C'est tout ce que vous devez faire pour implémenter la fonction de connexion. Le reste est de l'édition HTML.
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):
#Il a presque le même contenu que CreateView, mais passe non seulement le formulaire mais également l'objet Day.
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
Vient ensuite l'édition HTML.
Si vous souhaitez afficher quelque chose seulement après la connexion, vous pouvez le faire en l'incluant dans l'instruction if suivante.
{% if user.is_superuser%} Ce que vous voulez voir après la connexion {% endif%}
Si vous écrivez comme ci-dessous, l'ajout et la déconnexion seront affichés après la connexion, La connexion est affichée avant la connexion.
Si vous définissez target = "_ blank", la connexion / déconnexion s'ouvrira dans un onglet séparé.
base.html
<div class="container">
<nav class="nav">
<a class="nav-link active" href="{% url 'diary:index' %}">liste</a>
{% if user.is_superuser %}
<a class="nav-link" href="{% url 'diary:add' %}">ajouter à</a>
<a class="nav-link" href="{% url 'admin:logout' %}" target="_blank">Se déconnecter</a>
{% else %}
<a class="nav-link" href="{% url 'admin:login' %}" target="_blank">S'identifier</a>
{% endif %}
</nav>
{% block content %}
{% endblock %}
</div>
Vérifiez l'opération avec py manage.py runserver. Si vous cliquez sur le bouton Mettre à jour / Supprimer, vous serez redirigé vers l'écran de connexion.
Recommended Posts