No. | Titre | |
---|---|---|
1 | À moi-même en tant que débutant Django (1)-Application de projet- | |
2 | À moi-même en tant que débutant Django (2)-Qu'est-ce que MTV- | |
3 | À moi-même en tant que débutant Django (3)-Bonjour le monde!- | |
4 | À moi-même en tant que débutant Django (4)-Création d'une application mémo- | ☆ |
Dernière fois a vérifié "Hello World!" Avec Django. Cette fois, nous allons créer une application mémo simple en utilisant tous les ** MTV **!
L'objectif cette fois est d'approfondir la compréhension du ** modèle ** et du ** modèle ** qui n'ont pas été utilisés la dernière fois en créant une application mémo. De plus, sur la base de ce que j'ai appris jusqu'à présent, je serais très heureux si je pouvais comprendre le flux de création d'une application Web avec Django!
Nous allons le créer selon le flux suivant.
** Modèle ** décrit la définition des données à stocker dans la base de données. Écrivons-le.
app1/models.py
from django.db import models
# Create your models here.
class Memo(models.Model):
title = models.CharField (verbose_name = 'title', max_length = 100) text = models.TextField (verbose_name = 'content') created_date = models.DateTimeField (verbose_name = 'date de création', auto_now_add = True)
def __str__(self):
return self.title
Regardons chacun d'eux.
--Memo est le nom du modèle. Les noms de modèle sont en majuscules. --title, text, created_date sont des champs à enregistrer dans la base de données.
models.CharField
: Un champ qui définit la longueur du texte. C'est max_length = 100
dans (). C'est vrai, c'est-à-dire, veuillez écrire le titre avec moins de 100 caractères.
--models.TextField
: Ceci est également du texte, mais aucune longueur n'est spécifiée.
--models.DateTimeField
: Ceci est un champ de date et d'heure. En définissant ʻauto_now_add = True, l'heure à laquelle les données ont été créées est automatiquement entrée. --
verbose_name` spécifie l'affichage sur l'écran de gestion. L'écran de gestion sera décrit plus loin.C'est la fin de la définition du modèle. Il existe de nombreux autres types de champs dans le modèle, donc si vous êtes curieux, jetez un œil à la documentation officielle (https://docs.djangoproject.com/en/3.0/contents/). ..
Une fois le modèle défini, vous devez effectuer un processus de ** migration ** pour refléter ces informations dans la base de données. Il s'agit d'un événement habituel ou d'un événement traditionnel, et il doit être fait chaque fois qu'il y a un ajout ou un changement de modèle.
Pour refléter la définition du modèle dans la base de données, effectuez le traitement suivant.
Exécutez la commande suivante à l'invite de commande.
C:\Users\User_name\myapp>python manage.py makemigrations
Ensuite, vous verrez la sortie suivante. À ce stade, un fichier de migration a été créé, mais il n'a pas encore été reflété dans la base de données.
Migrations for 'app1':
app1\migrations\0001_initial.py
- Create model Memo
Continuez avec la commande suivante:
C:\Users\User_name\myapp>python manage.py migrate
Ensuite, vous devriez voir la sortie suivante.
Operations to perform:
Apply all migrations: admin, app1, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying app1.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying sessions.0001_initial... OK
My Great est complet avec juste cela! Le modèle Memo a été reflété avec succès dans la base de données! ... mais il est difficile d'imaginer ce qui s'est réellement passé. Afin de résoudre un tel problème, nous avons préparé un article spécial aujourd'hui.
Django est livré avec une page d'administration par défaut. Ici, je voudrais stocker les données dans la base de données à partir de la page administrateur et voir ce qui s'est passé lors de la migration précédente.
Démarrez immédiatement le serveur et accédez à la page administrateur!
C:\Users\User_name\myapp>python manage.py runserver
Après avoir vérifié que le serveur a démarré, accédez à http: //127.0.0.1: 8000 / admin
. Ensuite, vous vous retrouverez avec la page suivante.
Hmm? Oh, mot de passe pour le nom d'utilisateur? Je n'ai pas une telle chose. C'est vrai, mais ne vous inquiétez pas. Cela peut également être facilement créé à partir de l'invite de commande. Déconnectez le serveur une fois ou préparez une nouvelle console et exécutez la commande suivante.
C:\Users\User_name\myapp>python manage.py createsuperuser
Username (leave blank to use 'User_name'): memo_user
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.
Il sera affiché ligne par ligne à partir du haut. Si vous appuyez sur Entrée sans entrer de nom d'utilisateur, votre «nom_utilisateur» sera enregistré. L'enregistrement de l'utilisateur est terminé lorsque vous avez correctement saisi l'adresse e-mail et le mot de passe. Redémarrez le serveur et connectez-vous à la page / admin. Il s'agit de la page d'administration fournie par défaut avec Django. C'est simple et sophistiqué, n'est-ce pas? Hmm, j'aime ça. Pour vérifier le modèle sur la page administrateur, vous devez le définir dans ʻapp1 / admin.py`.
app1/admin.py
from django.contrib import admin
depuis .models import Memo # Import Memo
# Register your models here.
admin.site.register (Mémo) # Ajouter
Après avoir écrit ces derniers, veuillez revenir à la page administrateur et actualiser la page. J'ai confirmé le modèle de mon application Memo! Maintenant, allez sur la page Mémo et créez une note à partir de ADD MEMO en haut à droite! Quel genre de mémo avez-vous écrit? Non, je m'en fichais (rires) Si vous revenez à la page de mémo, vous pouvez voir que le mémo a été ajouté. De cette manière, Django vous permet d'ajouter des données à la base de données et de vérifier son contenu via la page administrateur. Apparemment, cela semble être une fonction ridiculement utile, et il est nécessaire d'écrire et d'utiliser le langage de la base de données à partir de la console ou de créer une page d'administrateur à partir de zéro. Pour être honnête, je suis toujours en train de développer la base de données, il est donc très utile de pouvoir manipuler les données visuellement de cette manière. Merci beaucoup, Django.
À partir de là, nous définirons ** View **. View récupère les données de la base de données sur demande et décide comment les afficher à l'écran!
app1/views.py
from django.shortcuts import render
depuis .models import Memo # Import Memo
# Create your views here.
def memo_list(request):
memos = Memo.objects.all()
context = {'memos': memos}
return render(request, 'app1/memo_list.html', context)
Cette fois, j'afficherai la liste des mémos à l'écran. Pour ce faire, nous devons obtenir les données du modèle Memo.
--memos = Memo.objects.all ()
: Récupère tous les objets (titre, contenu, date de création) de Memo.
--context = {'memos': memos}
: Transformez les informations requises dans un dictionnaire et transmettez-les à Template.
--render (request, 'app1 / memo_list.html', context)
: Passer context
à ʻapp1 / memo_list.html. Le
memo_list.html ici est le modèle. (
Memo_list.html` sera créé plus tard)
Ceci termine les paramètres d'affichage. Il est possible d'affiner les conditions lors de l'acquisition de données, mais cette fois, nous allons tout acquérir avec Simple is Best. Document officiel sera utile pour savoir comment obtenir les données.
C'est enfin fini. Le modèle n'est pas fourni par défaut, vous devez donc le préparer vous-même. Préparez un répertoire appelé templates sous l'application et préparez-y un répertoire appelé app1. Ensuite, placez le fichier html dans app1. Veuillez vous référer à cet article par narito blog pour la raison pour laquelle cette composition est utilisée.
myapp/templates/app1/memo_list.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Memo</title>
</head>
<style>
.app-name {
text-align: center;
}
.contents {
margin-left: 300px;
margin-right: 300px;
}
</style>
<div class='app-name'>
<! - Contenu du mémo-> {% for memo in memos %}
Date de création: {{memo.created_date}} p>
{{ memo.text | linebreaks }}