[PYTHON] MVT-Relation entre le modèle et le module de Django

Objectif

Récapitulons les modèles MVT lors de l'utilisation de Django et les modules correspondant à chaque modèle. Au fait, un module est un fichier source de "~ .py". Un package est un dossier de gestion des fichiers source. (OK si vous pensez que c'est un dialecte Python)

Contexte

J'entends souvent des modèles MVT, et je vois souvent des articles sur le framework Django. Cependant, j'ai pensé qu'il était difficile d'imaginer la correspondance entre les deux, alors je vais la résumer sous forme de mémoire. Veuillez commenter si vous souhaitez écrire plus en détail ou s'il y a un problème.

Quel est le modèle MVT?

La description
Model Gestion de données
View Contrôle des appels
Template Interface utilisateur

Est-ce que c'est comme ça si vous l'écrivez simplement? De plus, il existe une fonction qui peut utiliser la classe de contrôle des données d'entrée appelée Django form, et si vous créez une application à grande échelle, vous pouvez penser un peu plus à l'architecture et séparer la couche de service et la couche de domaine, mais c'est J'essaierai de le résumer dans une version détaillée un jour.

Tout d'abord, configurez le projet Django

Par exemple, je présenterai la configuration de base lorsqu'un projet appelé "sample_project" est créé et qu'une application appelée "sample_app" y est créée. (Pour les dossiers et modules qui ne sont pas créés par défaut lors de la création d'un projet Django et qui doivent être ajoutés par vous-même, ajoutez une étoile devant le nom) (Pour les packages ou les dossiers, ajoutez * après le nom)

sample_project*
  | - sample_project*
       | - settings.py
       | - urls.py
       | - wsgi.py
  | - sample_app*
       | - migrations*
       | - ☆templates*
             | - ☆static*
             | - ☆sample_app*
       | - models.py
       | - views.py
       | - ☆urls.py
  | - manage.py

Étant donné que l'objet de cet article est MVT, nous omettons les packages et modules non liés.

Quel module correspond à chaque couche?

Nous présenterons en fait les modules correspondants pour chaque couche. Model Ceci est lié au modèle

sample_project*
  | - sample_project*
       | - settings.py ・ ・ ・ A
  | - sample_app*
       | - migrations*・ ・ ・ B
       | - models.py ・ ・ ・ C

** A. Module de configuration à l'échelle du projet ** Ce n'est pas un module utilisé uniquement par Model, mais les informations de configuration de la base de données, etc. sont écrites ici.

** Forfait B.migrations ** Contient les fichiers source générés par la commande make migrations lorsque vous essayez de créer une base de données dans la base de code. La commande migrate applique le contenu ici à la base de données.

** C. Module pour définir chaque classe Model ** Vous définirez ici votre propre classe Model. Comment créer une classe Model

View Ceci est lié à View Il est important de se rappeler que View nécessite non seulement la définition de la fonction View pour le contrôle post-appel, mais également le paramétrage du répartiteur d'URL quant à la fonction View à appeler.

sample_project*
  | - sample_project*
       | - urls.py ・ ・ ・ A
  | - sample_app*
       | - views.py ・ ・ ・ B
       | - ☆urls.py ・ ・ ・ C

** A. urls.py ** dans le package du projet Décrit les informations du répartiteur pour appeler la fonction View en fonction de l'URL. Cependant, ce module décrit un répartiteur d'URL pour diviser chaque application dans le projet Django. Dans cet exemple, comme http: // ~~~~~ / sample_project / sample_app / Enregistrez le répartiteur d'URL jusqu'à la division de l'application après le nom d'hôte.

** B. Module de définition de chaque fonction View ** Définissez votre propre fonction d'affichage ici.

** C. urls.py ** dans le package d'application Décrit les informations de chaque répartiteur d'URL dans l'application. Vous devrez ajouter ce module vous-même. Vous allez enregistrer un répartiteur d'URL qui est une continuation de l'URL divisée pour chaque application par le * A. * ci-dessus. Dans cet exemple, sample_app pour que vous puissiez spécifier une URL telle que http: // ~~~~~ / sample_project / sample_app / home ou http: // ~~~~~ / sample_project / sample_app / editEnregistrez la pièce après /.

Template Ceci est lié au modèle

sample_project*
  | - sample_app*
       | - ☆templates*
             | - ☆static*· · · UNE
             | - ☆sample_app*・ ・ ・ B

** A. Package pour stocker les fichiers de rendu (fichiers css et fichiers JS) ** En plus du HTML, les fichiers nécessaires à la configuration de l'écran sont placés ici.

** Package de stockage de fichiers B.Template ** Placez le fichier HTML ici.

Résumé

Si vous utilisez un framework, il est assez important d'organiser où et quoi écrire! Cette fois, je me suis concentré sur les dossiers et fichiers que je devais regarder ici pour chaque MVT avec une structure simple pour le moment.

Recommended Posts

MVT-Relation entre le modèle et le module de Django
Paquets et modules Python
Entre paramétrique et non paramétrique
Différence entre processus et travail
Conversion entre unixtime et datetime
Différence entre "categorical_crossentropy" et "sparse_categorical_crossentropy"
Apprenez à connaître les packages et les modules Python
Différence entre régression et classification
Coopération entre PTVS et Anaconda
À propos de la déconstruction et de la déconstructibilité de Django
Différence entre np.array et np.arange
Différence entre MicroPython et CPython
Créer et lister des modèles Django
Coopération entre py2exe et les outils de configuration
Frontière entre C et Golang
Différence entre ps a et ps -a
Différence entre return et print-Python
Comparaison de la prédiction des données de séries chronologiques entre le modèle SARIMA et le modèle Prophet