[PYTHON] Implémentez l'extension utilisateur Django et enregistrez les informations jointes

La dernière fois, j'ai pu implémenter la connexion et la déconnexion avec l'utilisateur de Django.

J'ai fait beaucoup de recherches pour étendre les informations utilisateur à partir de là, mais à la fin cela n'a souvent pas fonctionné.

Enfin, c'est un réglage qui donne l'impression d'être terminé.

config/settings.py




INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'accounts.apps.AccountsConfig',
]


LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

STATIC_URL = '/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)
LOGIN_REDIRECT_URL = '/accounts/home'
LOGOUT_REDIRECT_URL = '/accounts/home'

#AUTH_USER_MODEL = 'users.CustomUser'

settings/urls.py


from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('accounts.urls')),
]

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"),
]

accounts/views.py


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

# Create your views here.
@login_required 
def home(request):
    return render(request, 'accounts/home.html')

accounts/admin.py


from django.contrib import admin
from .models import Profile

# Register your models here.
admin.site.register(Profile)

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>

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 }}!
  <h2>{{ user.get_full_name }}</h2>
  <ul>
    <li>Nom: {{ user.username }}</li>
    <li>Position: {{ user.profile.roll }}</li>
    <li>Date d'embauche: {{ user.profile.nyushabi }}</li>
    <li>Date de départ: {{ user.profile.taishabi }}</li>
    <li>Ordre d'affichage: {{ user.profile.hyoujijyun }}</li>
    <li>Salaire horaire: {{ user.profile.jikyu }}</li>
    <li>Supprimer le drapeau: {{ user.profile.delete }}</li>
    <li>Date d'enregistrement: {{ user.profile.create_date }}</li>
    <li>Utilisateur enregistré: {{ user.profile.create_user }}</li>
    <li>Mettre à jour la date et l'heure: {{ user.profile.update_date }}</li>
    <li>Mettre à jour l'utilisateur: {{ user.profile.update_user }}</li>
  </ul>

  <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 %}

Pour la première fois ici, j'ai fait mekumigrate.

Essayez de vous connecter en tant qu'utilisateur administrateur

image.png

image.png

Ajoutons les informations étendues à l'administrateur.

Et essayez de vous connecter

image.png

image.png

Oh, il semble que vous puissiez obtenir les informations ci-jointes

Ajoutez un utilisateur et voyez si cela fonctionne vraiment différemment.

J'essaye d'obtenir une autre information en ajoutant un président nommé Hanako ...

image.png

Je peux y aller.

Ce que j'ai remarqué ici ... Il peut être dupliqué car il existe un indicateur valide ou non valide dans l'élément standard de l'utilisateur. À l'avenir, il peut être supprimé car il est inutile.

Pour le moment, je vais continuer avec cela.

Eh bien, je ne sais pas ce que j'essayais de faire et je suis resté coincé dans la connexion (rires) Je me souviens, j'ai commencé à penser à créer un nouvel écran d'inscription du personnel, Si je peux m'inscrire et modifier sur l'écran de l'administrateur, je pense qu'il ne sera pas opérationnel pendant un certain temps. Je souhaite implémenter une fonction différente.

Recommended Posts

Implémentez l'extension utilisateur Django et enregistrez les informations jointes
Jugez l'extension et téléchargez l'image
Afficher les informations utilisateur, etc. dans le journal Django
Implémenter un modèle utilisateur personnalisé dans Django
Django http Spécifiez le code d'état et retournez.
Passer les informations de connexion à afficher dans Django
[Keras] Implémenter un étudiant bruyant et vérifier l'effet
Enregistrer des mots dans le dictionnaire utilisateur GiNZA (SudachiPy)