[PYTHON] Recréez l'écran d'inscription du personnel de Django avec la classe

J'ai essayé de créer un écran d'enregistrement avec la fonction def, mais cela n'a pas fonctionné, alors je suis passé à le créer avec la classe.

Il y a certaines parties que vous devez créer avec cela, et certaines parties que vous n'avez pas, alors ne soyez pas trop précis sur les écrans que vous n'utilisez pas souvent.

python:staff.urls.py


from django.urls import path, include
from .views import StaffCreate

urlpatterns = [
    path('create/', StaffCreate.as_view(), name = "staffcreate"),
]

Modifiez également le routage des URL. Dans le cas d'une classe, as_view () semble être une règle.

Et aussi changé de vues

views.py


from django.shortcuts import render
from .form import CreateUserForm
from .models import Staff
from django.views.generic import CreateView


class StaffCreate(CreateView):
    template_name = "staff/create.html"
    model = Staff
    fields = ("id", "name", "password", "roll", "nyushabi", "taishabi", "hyoujijyun", "jikyu", "delete")
    ##success_url = reverse_lazy("list")

Une fois l'inscription réussie, je reviendrai à l'écran de la liste du personnel, mais je ne l'ai pas encore créée, je l'ai donc commentée.

Enfin, modifiez le fichier html.

python:staff.create.html


{% extends 'base.html' %}

{% block title %}
{% endblock title %}

{% block header %}
Inscription du personnel
{% endblock header %}

{% block content %}
<from action="" method="POST">
    {{ form.as_p }}
    <input type="submit" value="enregistrement">
</from>
{% endblock content %}

Cela devrait être fait ... J'essaie toujours de le réparer avec une erreur d'ici.

Démarrez le serveur http://127.0.0.1:8000/staff/create/

Ouvrons la page avec.

image.png

Oh, c'était affiché! C'est un écran simple et maladroit, mais il est important que la fonction fonctionne! (J'espère que je pourrai porter les décorations ici à l'avenir, mais avant tout, les fonctions seront implémentées!)

J'essaierai de m'inscrire.

image.png

Bon, la date est aussi solide, il est difficile de comprendre comment la saisir, et une correction peut être indispensable (rires) Vous pouvez en faire l'expérience en le saisissant vous-même. Faisons un système aimant

Mais pour le moment, cliquez sur le bouton d'inscription

cette? Il n'y a pas de réaction Je me demande pourquoi ...

ne sait pas…

Si vous revérifiez les modèles, il est difficile de connaître la date et l'heure de création, donc corrigez-les. C'est peut-être parce que je ne me suis pas enregistré en tant qu'utilisateur ...

staff.py


from django.db import models

class Staff(models.Model):
    id = models.AutoField(verbose_name='ID d'employé',primary_key=True)
    password = models.CharField(verbose_name='mot de passe',max_length=20)
    name = models.CharField(verbose_name='Nom de l'employé',max_length=20, blank=False, null=True)
    roll = models.CharField(verbose_name='Position',max_length=10, blank=False, null=True)
    nyushabi = models.DateField(verbose_name='Date d'embauche',blank=False, null=True)
    taishabi = models.DateField(verbose_name='Date de départ',blank=True, null=True)
    hyoujijyun = models.IntegerField(verbose_name='Ordre d'affichage',unique=True)
    jikyu = models.IntegerField(verbose_name='Salaire horaire',blank=False, null=True)
    delete = models.BooleanField(verbose_name='Supprimer le drapeau',default=False)
    create_date = models.DateTimeField(verbose_name='Date d'enregistrement', auto_now_add=True)
    create_user = models.CharField(verbose_name='Utilisateur enregistré', max_length=50, null=True)
    update_date = models.DateTimeField(verbose_name='Mettre à jour la date et l'heure', auto_now=True)
    update_user = models.CharField(verbose_name='Mettre à jour l'utilisateur', max_length=50, null=True)

    def __str__(self):
        return self.name

regist ⇒ Modifié pour créer. C'est plus facile à comprendre

Effectuer la migration

De plus, j'ai oublié d'ajouter des mesures intersites, alors je l'ai ajouté

python:staff.create.html


{% extends 'base.html' %}

{% block title %}
{% endblock title %}

{% block header %}
Inscription du personnel
{% endblock header %}

{% block content %}
<from action="" method="POST">{% csrf_token %}
    {{form.as_p}}
    <input type="submit" value="enregistrement">
</from>
{% endblock content %}

Eh bien, je n'ai rien changé, donc il ne semble pas que l'enregistrement fonctionne. Je vais essayer.

image.png

Je vais appuyer sur le bouton d'inscription

image.png

Aucune réaction (rires)

Eh bien, je ne connais pas la cause ...

Je me suis demandé si je pouvais comprendre quelque chose si je m'inscrivais sur l'écran administrateur, mais lorsque je l'ai essayé, l'erreur suivante

image.png

Les utilisateurs enregistrés et les utilisateurs mis à jour sont requis ... Cela signifie que l'écran de connexion est créé en premier, puis vous vous connectez pour obtenir l'utilisateur et l'utiliser lors de l'inscription. Bon à remarquer: smiley:

Je vais suspendre la création de l'écran de création du personnel et créer l'écran de connexion.

Recommended Posts

Recréez l'écran d'inscription du personnel de Django avec la classe
Transition vers l'écran de mise à jour avec le Django a tag
[Django] Afficher les données d'inscription associées aux utilisateurs sur le formulaire d'inscription / d'édition (formulaire)
Créer un écran de connexion dans Django all auth
Créer un écran de mise à jour avec Django Updateview
Tout refaire pour l'écran de connexion Django
Le moyen le plus simple de démarrer avec Django
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)
Internationalisation avec Django
CRUD avec Django
Créez Fatjar en changeant la classe principale avec Gradle
Ajouter des attributs d'objets de classe avec une instruction for
Accédez à l'API Twitter après l'authentification Oauth avec Django
Essayez de créer une application Todo avec le framework Django REST
L'histoire de la confusion entre la production japonaise et Django
Comment enregistrer les mêmes données plusieurs fois avec une seule entrée sur l'écran de gestion de Django