C'est une bonne idée de lire "Si vous partez de rien: Vue d'ensemble" et "Tutoriel ici: Partie 1-7", mais vous pouvez d'abord essayer ce cours.
Créons une application qui gère des livres simples.
Commencez par créer un projet appelé mybook. Pour ce faire, utilisez la commande django-admin startproject mybook
.
Lorsque vous essayez de créer un projet avec PyCharm, il semble qu'un dossier appelé PycharmProjects sera créé, donc je vais le créer sous ce
Assurez-vous que vous êtes dans l'environnement virtuel de (env1). Si vous l'avez déjà fait, vous n'avez pas besoin des scripts suivants Mac
workon env1
et WindowsScripts \ activate
.
Pour Mac,
$ workon env1
(env1) $ cd ~/PycharmProjects/
(env1) $ django-admin startproject mybook
Pour les fenêtres,
C:¥Users¥hoge>cd Documents¥env1
C:¥Users¥hoge¥Documents¥env1> Scripts¥activate
(env1) C:¥Users¥hoge¥Documents¥env1> cd C:¥Users¥hoge¥PycharmProjects
(env1) C:¥Users¥hoge¥PycharmProjects> django-admin startproject mybook
De là, l'explication revient à l'hypothèse Mac. Pour Windows, veuillez lire comme chaque environnement.
Fichier créé dans ~ / PycharmProjects /
mybook/
manage.py
mybook/
__init__.py
asgi.py
settings.py
urls.py
wsgi.py
Allez dans le répertoire mybook.
$ cd mybook
Ouvrons le projet généré avec PyCharm.
Pour Windows, il s'agit de C: \ Users \ hoge \ Pycharm Projects \ mybook.
Pour Windows, il s'agit de C: \ Users \ hoge \ Documents \ env1 \ python.exe.
Les paramètres de la base de données sont dans mybook / settings.py
, mais par défaut, il est déjà configuré pour utiliser SQlite3.
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
:
# Database
# https://docs.djangoproject.com/en/1.9/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
Tout en regardant mybook / settings.py
, définissez la langue et le fuseau horaire sur Japon.
#
Désigne la ligne que vous avez commentée. Pour commenter Pour Mac, positionnez-le sur une ligne (s'il y a plusieurs lignes, sélectionnez la ligne) et utilisez la commande + /. Pour Windows, Ctrl + /. Hmm pratique.
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'ja'
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Tokyo'
Lorsque vous entrez la commande pour migrer la base de données, un fichier appelé db.sqlite3
est créé dans le répertoire directement sous le projet.
$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, 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 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
Créez un super utilisateur avec la commande suivante.
$ python manage.py createsuperuser
Nom d'utilisateur(leave blank to use 'hoge'): admin
adresse mail: [email protected]
Password: hogefuga
Password (again): hogefuga
Superuser created successfully.
En chemin, répondez aux questions suivantes.
Démarrez le serveur de développement avec la commande python manage.py runserver
pour voir si le projet fonctionne.
$ python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
January 08, 2020 - 16:20:02
Django version 3.0.2, using settings 'mybook.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Essayez d'accéder à http://127.0.0.1:8000/ avec votre navigateur.
La fin du serveur de développement est control + c
.
Appuyez simplement sur la marque de bogue en haut à droite de l'écran. Vous pouvez également sélectionner Exécuter> Déboguer ..> mybook dans le menu.
C'est OK si l'affichage suivant apparaît ci-dessous. Lorsque vous souhaitez arrêter, appuyez sur le bouton carré rouge.
Comme un IDE typique, vous pouvez définir des points d'arrêt et vérifier des variables en cliquant sur le côté droit du numéro de ligne dans votre code.
Une fois arrêtée, la fenêtre de débogage est sur le chemin, alors appuyez sur le bouton de réduction.
Créons une application appelée cms sous le projet.
cms est comme un système de gestion de contenu, comme la maintenance principale. Une application est une unité de fonctions qui composent un projet et, dans certains cas, une unité qui peut être réutilisée.
Créez-le avec la commande suivante.
$ python manage.py startapp cms
Les fichiers suivants ont été créés dans le répertoire du projet mybook.
mybook/
cms/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
manage.py
mybook/
:
:
Définissez le modèle de données que vous souhaitez définir dans la base de données dans cms / models.py
.
Avant le cours, si vous n'ouvrez pas deux lignes, une ligne ondulée apparaîtra et vous serez prévenu. Il s'agit d'un mécanisme de vérification de style de code appelé pep8. De même, si la fin du code ne se termine pas par un simple saut de ligne, des lignes ondulées réapparaîtront et vous vous fâcherez, alors soyez prudent.
from django.db import models
class Book(models.Model):
"""Livres"""
name = models.CharField('Titre de livre', max_length=255)
publisher = models.CharField('l'éditeur', max_length=255, blank=True)
page = models.IntegerField('nombre de pages', blank=True, default=0)
def __str__(self):
return self.name
class Impression(models.Model):
"""Impressions"""
book = models.ForeignKey(Book, verbose_name='Livres', related_name='impressions', on_delete=models.CASCADE)
comment = models.TextField('commentaire', blank=True)
def __str__(self):
return self.comment
«L'impression» est un modèle enfant associé au «livre».
Vous devez indiquer au projet que vous avez installé l'application cms.
Si vous ouvrez cms / apps.py
, une classe appelée CmsConfig est définie.
Ajoutez ceci à la fin de ʻINSTALLED_APPS dans
mybook / settings.pyavec la chaîne
'cms.apps.CmsConfig',`.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'cms.apps.CmsConfig', #application cms
]
La commande suivante récupère les modifications dans models.py et crée un fichier de migration.
$ python manage.py makemigrations cms
Migrations for 'cms':
cms/migrations/0001_initial.py
- Create model Book
- Create model Impression
Vous pouvez vérifier quel type de SQL ce fichier de migration sera avec la commande suivante.
$ python manage.py sqlmigrate cms 0001
BEGIN;
--
-- Create model Book
--
CREATE TABLE "cms_book" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(255) NOT NULL, "publisher" varchar(255) NOT NULL, "page" integer NOT NULL);
--
-- Create model Impression
--
CREATE TABLE "cms_impression" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "comment" text NOT NULL, "book_id" integer NOT NULL REFERENCES "cms_book" ("id") DEFERRABLE INITIALLY DEFERRED);
CREATE INDEX "cms_impression_book_id_b2966102" ON "cms_impression" ("book_id");
COMMIT;
Utilisez la commande suivante pour refléter le fichier de migration qui n'a pas été reflété dans la base de données vers la base de données.
$ python manage.py migrate cms
Operations to perform:
Apply all migrations: cms
Running migrations:
Applying cms.0001_initial... OK
Étant donné que Django 1.7 inclut l'outil de migration de base de données en standard, si vous souhaitez ajouter / modifier des éléments dans une nouvelle table ou une table existante, par exemple, votre travail quotidien sera le suivant.
- Correction de models.py
- $ python manage.py nom de l'application makemigrations… ramasser les modifications dans models.py et créer un fichier de migration
- $ python manage.py migrate… Reflète le fichier migrate dans la base de données
A partir de là, la bonne chose à propos de Django.
Django n'a pas de génération de modèle d'application comme l'échafaudage, c'est-à-dire la génération automatique de CRUD (Créer, Lire, Mettre à jour, Supprimer). Au lieu de cela, il existe un site de gestion, à partir duquel toutes les données de maintenance de base peuvent être entrées.
Affiche le site de gestion.
Démarrez le serveur de développement avec python manage.py runserver
.
Accédez à http: //127.0.0.1: 8000 / admin /
avec un navigateur.
Connectez-vous en tant que super utilisateur ʻadmin / hogefugainitialisé avec le premier
$ python manage.py createuperuser`.
Vous ne pouvez encore voir que les groupes et les utilisateurs.
Ajoutez le modèle que vous souhaitez afficher sur le site d'administration dans cms / admin.py
.
from django.contrib import admin
from cms.models import Book, Impression
admin.site.register(Book)
admin.site.register(Impression)
Jetons un nouveau coup d'œil à http: //127.0.0.1: 8000 / admin /
.
Veuillez essayer d'ajouter, de modifier et de supprimer des données.
Lorsque vous consultez la liste des sites de gestion, dans models.py
def __str__(self):
Celui défini dans est visible comme nom de l'enregistrement.
Modifions cms / admin.py
pour que nous puissions voir un peu plus tout l'élément de l'enregistrement.
Avant le cours, si vous n'ouvrez pas deux lignes, une ligne ondulée apparaîtra et vous serez prévenu.
from django.contrib import admin
from cms.models import Book, Impression
# admin.site.register(Book)
# admin.site.register(Impression)
class BookAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'publisher', 'page',) #Articles que vous souhaitez lister
list_display_links = ('id', 'name',) #Éléments sur lesquels il est possible de cliquer avec le lien de correction
admin.site.register(Book, BookAdmin)
class ImpressionAdmin(admin.ModelAdmin):
list_display = ('id', 'comment',)
list_display_links = ('id', 'comment',)
raw_id_fields = ('book',) #Ne tirez pas sur la clé externe (empêche l'expiration du délai lorsque le nombre de données augmente)
admin.site.register(Impression, ImpressionAdmin)
Et ça.
Vous pouvez facilement répertorier, enregistrer, modifier et supprimer les tables que vous avez ajoutées à votre modèle. Vous n'avez pas besoin d'explication sur la façon de fabriquer un CRUD, non?
Cela n'explique pas Django, alors expliquons comment créer un CRUD par vous-même.
Continuez vers Introduction à Python Django (4)
Recommended Posts