Django super introduction par les débutants Python! Partie 6 J'ai essayé d'implémenter la fonction de connexion

À propos de cet article

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.

Livrables

TOP page avant la connexion (la liste et la connexion sont affichées dans la barre de navigation.)

TOP page après la connexion (la liste, l'ajout et la déconnexion sont affichés dans la barre de navigation.)

Écran de connexion

Écran de déconnexion

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

Modification de base.html

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>

Contrôle de fonctionnement

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

Django super introduction par les débutants Python! Partie 6 J'ai essayé d'implémenter la fonction de connexion
Django super introduction par les débutants Python! Partie 3 J'ai essayé d'utiliser la fonction d'héritage de fichier de modèle
Django super introduction par les débutants Python! Partie 2 J'ai essayé d'utiliser les fonctions pratiques du modèle
Django super introduction par les débutants Python! Partie 1 J'ai essayé d'afficher une page HTML qui ne dit que "Hello World"
Django super introduction par les débutants Python! Partie 5 J'ai créé une application de journal super simple avec une vue générale basée sur la classe
J'ai essayé d'implémenter la fonction d'envoi de courrier en Python
Django super introduction par les débutants Python! Partie 4 J'ai créé une application de journal super simple (créée uniquement avec des fonctions sans utiliser de vues à usage général basées sur les classes)
J'ai essayé d'implémenter un pseudo pachislot en Python
[Python] J'ai essayé d'obtenir le nom du type sous forme de chaîne de caractères à partir de la fonction type
Introduction à la création d'IA avec Python! Partie 2 J'ai essayé de prédire le prix de l'immobilier dans la ville de Boston avec un réseau neuronal
[Introduction] J'ai essayé de l'implémenter moi-même tout en expliquant l'arbre de dichotomie
[Introduction] J'ai essayé de l'implémenter moi-même tout en expliquant pour comprendre la dichotomie
J'ai essayé d'implémenter un automate cellulaire unidimensionnel en Python
[Django] J'ai essayé d'implémenter des restrictions d'accès par héritage de classe.
J'ai essayé de créer une API RESTful en connectant l'API rapide du framework Python explosif à MySQL.
J'ai aussi essayé d'imiter la fonction monade et la monade d'état avec le générateur en Python
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
[Introduction à Python] Comment fractionner une chaîne de caractères avec la fonction split
[Python] J'ai essayé d'implémenter un tri stable, alors notez
[Introduction à la simulation] J'ai essayé de jouer en simulant une infection corona ♬ Partie 2
J'ai essayé de mettre en œuvre un jeu de dilemme de prisonnier mal compris en Python
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'implémenter la permutation en Python
Super Introduction Arithmétique Bit Python
J'ai essayé d'implémenter PLSA dans Python 2
J'ai essayé d'implémenter ADALINE en Python
J'ai essayé d'implémenter PPO en Python
J'ai essayé de communiquer avec un serveur distant par communication Socket avec Python.
J'ai essayé d'implémenter la régression linéaire bayésienne par échantillonnage de Gibbs en python
J'ai essayé de vérifier et d'analyser l'accélération de Python par Cython
[Introduction à Python] Comment écrire une chaîne de caractères avec la fonction format
J'ai essayé de vérifier le résultat du test A / B avec le test du chi carré
Python: je souhaite mesurer proprement le temps de traitement d'une fonction
J'ai essayé d'analyser la carte du Nouvel An par moi-même en utilisant python
J'ai essayé d'implémenter le jeu de cartes de Trump en Python
J'ai créé une fonction pour voir le mouvement d'un tableau à deux dimensions (Python)
[Python] J'ai essayé de remplacer le nom de la fonction par le nom de la fonction
J'ai essayé d'implémenter TOPIC MODEL en Python
J'ai essayé d'utiliser le module Datetime de Python
J'ai essayé d'implémenter le tri sélectif en python
J'ai essayé de mettre en œuvre le problème du voyageur de commerce
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 5/22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 7/22]
[Python] Deep Learning: J'ai essayé d'implémenter Deep Learning (DBN, SDA) sans utiliser de bibliothèque.
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 4/22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Part3 / 22]
[Python] Smasher a essayé de faire du processus de chargement de la vidéo une fonction à l'aide d'un générateur
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 1/22]
J'ai essayé d'implémenter ce qui semble être un outil de snipper Windows avec Python
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 6/22]
[Introduction à Docker] J'ai essayé de résumer diverses connaissances Docker acquises en étudiant (Windows / Python)
Introduction à la création d'IA avec Python! Partie 3 J'ai essayé de classer et de prédire les images avec un réseau de neurones convolutifs (CNN)
J'ai essayé de représenter graphiquement les packages installés en Python
Je veux facilement implémenter le délai d'expiration en python
[Introduction à Python] Comment itérer avec la fonction range?
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'ai essayé de toucher un fichier CSV avec Python