[PYTHON] Tout refaire pour l'écran de connexion Django

J'étais en train de rechercher diverses choses à partir de la fonction, mais je l'ai fait en l'imitant car il devenait difficile de créer simplement un écran de connexion. Cependant, j'ai recréé le projet à partir de zéro (rires)

image.png

La procédure a été créée presque de la même manière à partir de la source de référence! Excellent article

Ce genre d'article est utile car Django a encore peu d'informations japonaises. Ensuite, je pense que c'est Ruby ... J'ai juste choisi python parce que je ne connaissais pas l'avenir

Source de référence https://intellectual-curiosity.tokyo/2018/11/13/django%E3%81%AE%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E5%87%A6%E7%90%86%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E2%91%A0/

Le site ici était le meilleur!

J'ai créé un écran de connexion en suivant cette procédure.

image.png

Lorsque vous vous connectez

image.png

Lorsque vous vous déconnectez, vous serez renvoyé à l'écran de connexion.

Si vous n'êtes pas connecté, vous serez obligé de revenir à l'écran de connexion.

J'écrirai le code

python:accounts.urls.py


from django.conf.urls import url
from django.contrib.auth import views as auth_views
from . import views
from django.urls import path, include

app_name = 'accounts'

urlpatterns = [
    path('login/', auth_views.LoginView.as_view(template_name='accounts/login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
    path('home/', views.home, name="home"),
]

python:accounts.views.py


from django.shortcuts import render
from django.contrib.auth.decorators import login_required

@login_required
def home(request):
    return render(request, 'accounts/home.html')

python:config.setting.py


LOGIN_REDIRECT_URL = '/accounts/home'
LOGOUT_REDIRECT_URL = '/accounts/home'

ajouter à

templates/accounts/base.html


<!doctype html>
<html lang="ja">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">

    {% block customcss %}
    {% endblock customcss %}
    
    <title>famille apparentée</title>
  </head>
  <body>
  
    {% block header %}
    {% endblock header %}

    {% block content %}
    {% endblock content %}

    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script>
  </body>
</html>

HTML pour la connexion

templates/accounts/login.html


{% extends 'accounts/base.html' %}
{% load static %}


{% block customcss %}
    <link rel='stylesheet' type='text/css' href="{% static 'css/accounts/style.css' %}">
{% endblock customcss %}


{% block header %}
{% endblock header %}

{% block content %}
  <body>
    
    <form class="form-login" action='' method='POST'>
    <h1>Écran de connexion</h1>
    {% csrf_token %}

    {{ form.as_p }}

    <button>S'identifier</button>
    <p class="mt-5 mb-3 text-muted">&copy;GK</p>
    </form>
  </body>
</html>
{% endblock content %}

templates/accounts/home.html


{% extends 'accounts/base.html' %}
{% load static %}

{% block customcss %}
    <link rel='stylesheet' type='text/css' href="{% static 'css/style.css' %}">
{% endblock customcss %}


{% block header %}
<title>Écran d'accueil</title>
{% endblock header %}

{% block content %}
<body>
  {% if user.is_authenticated %}
  Hi {{ user.username }}!
  <p><a href="{% url 'accounts:logout' %}">logout</a></p>
  {% else %}
  <p>You are not logged in</p>
  <a href="{% url 'accounts:login' %}">login</a>
{% endif %}
  </body>
{% endblock content %}

L'écran de connexion est maintenant implémenté. À partir de maintenant, je vais étudier comment associer des informations aux informations sur les utilisateurs et le personnel que je souhaitais à l'origine.

Recommended Posts

Tout refaire pour l'écran de connexion Django
Créer un écran de connexion Django
Créer un écran de connexion dans Django all auth
Recréez l'écran d'inscription du personnel de Django avec la classe
Prise en charge de l'internationalisation avec Django 1.9
[Django] Refaire la migration
Une histoire sur l'implémentation d'un écran de connexion avec django
DJango Memo: depuis le début (réglage de l'écran d'erreur)
Notes d'apprentissage pour la fonction migrations dans le framework Django (2)
Notes d'apprentissage pour la fonction migrations dans le framework Django (3)
Notes d'apprentissage pour la fonction migrations dans le framework Django (1)
Transition vers l'écran de mise à jour avec le Django a tag
[Django] Comment rediriger les utilisateurs non connectés vers la page de connexion
Flux d'ajout d'écran Django2
[Django] Renommer le projet
Résumé des points d'achoppement à Django pour la première fois
Django Faites des choix uniquement pour l'établissement auquel vous appartenez
DJango Memo: depuis le début (plus de modifications sur l'écran de gestion)
[Python] Créer un écran pour le code d'état HTTP 403/404/500 avec Django