Ceci est ** 2nd **, un mémorandum de création d'une application de gestion de score shogi à l'aide de Django.
L'environnement de travail cette fois-ci est le suivant
De plus, la structure de répertoires de Django ressemble à ceci:
- kifu_app_project/
- kifu_app_project/
- __init__.py
- setting.py
- urls.py
- wsgi.py
- kifu_app/
- migrations/
- __init__.py
- admin.py
- apps.py
- models.py
- tests.py
- views.py
- manage.py
- .gitignore
--Paramètres de la base de données
[Document officiel] 1 est facile à comprendre, donc je pense qu'il vaut mieux regarder ceci et le modifier.
Il y a settings.py dans le kifu_app_project interne, alors modifiez-le.
Par défaut, il se connecte à sqlite3
, alors changez-le pour vous connecter à mysql
.
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'Nom de la base de données',
'USER': 'Nom d'utilisateur',
'PASSWORD': 'mot de passe',
'HOST': 'localhost',
'PORT': '3306',
}
}
Entrez ensuite la commande suivante, mais ...
$ python manage.py migrate
ModuleNotFound Error : No module named 'MySQLdb'
J'obtiens l'erreur.
J'ai cherché là-bas et j'ai trouvé que l'installation de PyMySQL résoudrait le problème, alors je vais l'essayer, mais cette fois
$ python manage.py migrate
mysqlclient 1.3.13 or newer is required;
J'ai eu l'erreur.
Et quand j'ai examiné cette erreur, j'ai trouvé le blog suivant. [Django: Résolution d’erreurs «lever incorrectementConfiguré (‘ mysqlclient 1.3.13 ou plus récent est requis; ~) django.core.exceptions.ImproperlyConfigured: ~ ”] 2
Merci,
La bibliothèque MySQL (MariaDB) recommandée côté Django est mysqlclient au lieu de PyMySQL
Il paraît que Par conséquent, installez mysqlclient avec pip.
$ pip install mysqlclient
Et lorsque vous exécutez à nouveau, migrez.
$ python manage.py migrate
Apply all migrations: admin ~
Et ça a marché!
Je considère Model comme un document / modèle de conception de table. Cette fois, créez le tableau suivant.
--Tableau d'information
Commencez par créer une table d'informations.
models.py
class Information(models.Model):
date = models.DateTimeField()
sente = models.CharField(max_length=50)
gote = models.CharField(max_length=50)
result = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(3)]) # `validatos`Validation avec(0 ou plus et moins de 3)
my_result = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(3)])
small_class = models.ForeignKey(SmallClass, on_delete=models.CASCADE) #Définir une relation
create_at = models.DateTimeField(auto_now_add=True) #Ajouter automatiquement du temps
update_at = models.DateTimeField(auto_now=True) #Mettre à jour automatiquement l'heure
(Il existe des variables japonaises, mais veuillez les ignorer)
Pour les champs qui peuvent être utilisés, je me suis référé à la page suivante. [Liste récapitulative par champ du modèle de base de données Django] 3
Ce que je trouve particulièrement utile avec Django, c'est qu'il est assez facile de créer des relations entre les tables.
Avec ForeignKey (to, on_delete, ** options)
, vous pouvez définir une relation plusieurs-à-un (à quel modèle se rapporter).
Cela facilite la récupération des données associées, par exemple lors de la récupération de requêtes à une date ultérieure.
De même, définissez d'autres tables.
models.py
class LargeClass(models.Model):
name = models.CharField(max_length=10)
class MiddleClass(models.Model):
large_class = models.ForeignKey(LargeClass, on_delete=models.CASCADE)
name = models.CharField(max_length=10)
class SmallClass(models.Model):
middle_class = models.ForeignKey(MiddleClass, on_delete=models.CASCADE)
name = models.CharField(max_length=10)
class Information(models.Model):
#~ Omis ~
class Kifu(models.Model):
information = models.ForeignKey(Information, on_delete=models.CASCADE)
number = models.IntegerField(validators=[MinValueValidator(0)])
te = models.CharField(max_length=20)
En raison de la relation (clé étrangère), si vous n'écrivez pas dans cet ordre, une erreur se produira.
Après avoir modifié models.py, exécutez la commande suivante pour effectuer réellement la migration. La migration consiste à exécuter des instructions SQL, à créer des tables, etc. en fonction du modèle.
$ python manage.py makemigrations <nom de l'application>
Migrations for '~'
~\migrations\0001_initial.py
- Create model ~
...~ Omis ~
Notez qu'il s'agit du nom de l'application, pas du nom du projet.
J'espère que vous verrez l'instruction «Créer un modèle kifu_app_project \ kifu_app \ migrations
.
Ce fichier définit les tables et les colonnes en fonction du modèle que vous avez créé.
Effectuons une migration basée sur le fichier de migration créé précédemment et créons en fait une table.
$ python manage.py migrate
Applying kifu_app.0001_initial... OK
Si vous dites "OK", vous réussissez!
Après cela, connectons-nous à mysql et vérifions si la table est créée!
[Paramètres du site d'administration par défaut de Django] 4
Recommended Posts