[PYTHON] Djangos MVT-Beziehung zwischen Modell und Modul

Zweck

Fassen wir die MVT-Muster bei Verwendung von Django und die jedem Muster entsprechenden Module zusammen. Ein Modul ist übrigens eine Quelldatei von "~ .py". Ein Paket ist ein Ordner zum Verwalten von Quelldateien. (OK, wenn Sie es als Python-Dialekt betrachten)

Hintergrund

Ich höre oft MVT-Muster und sehe oft Artikel über das Django-Framework. Ich dachte jedoch, es sei schwierig, sich die Entsprechung zwischen den beiden vorzustellen, deshalb werde ich sie als Memorandum zusammenfassen. Bitte kommentieren Sie, wenn Sie detaillierter schreiben möchten oder wenn etwas nicht stimmt.

Was ist das MVT-Muster?

Erläuterung
Model Datenmanagement
View Anrufsteuerung
Template Benutzeroberfläche

Ist es so, wenn du es einfach schreibst? Darüber hinaus gibt es eine Funktion, die die Eingabedatensteuerungsklasse namens Django form verwenden kann. Wenn Sie eine umfangreiche Anwendung erstellen, können Sie etwas mehr über die Architektur nachdenken und die Serviceschicht und die Domänenschicht trennen Ich werde versuchen, es eines Tages in einer detaillierten Version zusammenzufassen.

Konfigurieren Sie zunächst das Django-Projekt

Zum Beispiel werde ich die Grundkonfiguration einführen, wenn ein Projekt namens "sample_project" erstellt und eine Anwendung namens "sample_app" darin erstellt wird. (Fügen Sie für Ordner und Module, die beim Erstellen eines Django-Projekts nicht standardmäßig erstellt werden und selbst hinzugefügt werden müssen, einen Stern vor dem Namen hinzu.) (Fügen Sie für Pakete oder Ordner * nach dem Namen hinzu.)

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

Da der Schwerpunkt dieses Artikels auf MVT liegt, werden nicht verwandte Pakete und Module weggelassen.

Welches Modul entspricht jeder Schicht?

Wir werden tatsächlich die entsprechenden Module für jede Schicht vorstellen. Model Dies hängt mit dem Modell zusammen

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

** A. Projektweites Konfigurationsmodul ** Es ist kein Modul, das nur von Model verwendet wird, sondern es werden hier Informationen zu Datenbankeinstellungen usw. geschrieben.

** B.Migrationspaket ** Enthält die Quelldateien, die mit dem Befehl "make migrations" generiert wurden, wenn versucht wird, eine Datenbank in der Codebasis zu erstellen. Der Befehl migrate wendet den Inhalt hier auf die Datenbank an.

** C. Modul zum Definieren jeder Modellklasse ** Hier definieren Sie Ihre eigene Modellklasse. So erstellen Sie eine Modellklasse

View Dies hängt mit View zusammen Es ist wichtig zu beachten, dass View nicht nur die Definition der View-Funktion für die Steuerung nach dem Anruf erfordert, sondern auch die Einstellung des URL-Dispatchers, welche View-Funktion aufgerufen werden soll.

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

** A. urls.py ** im Projektpaket Beschreibt die Dispatcher-Informationen zum Aufrufen der View-Funktion basierend auf der URL. Dieses Modul beschreibt jedoch einen URL-Dispatcher, mit dem jede Anwendung im Django-Projekt aufgeteilt wird. In diesem Beispiel wie "http: // ~~~~~ / sample_project / sample_app /" Registrieren Sie den URL-Dispatcher bis zur Aufteilung der Anwendung nach dem Hostnamen.

** B. Modul zum Definieren jeder Ansichtsfunktion ** Definieren Sie hier Ihre eigene Ansichtsfunktion.

** C. urls.py ** im Anwendungspaket Beschreibt die einzelnen URL-Dispatcher-Informationen in der Anwendung. Sie müssen dieses Modul selbst hinzufügen. Sie registrieren einen URL-Dispatcher, der eine Fortsetzung der URL darstellt, die für jede Anwendung durch das oben genannte * A * geteilt wird. In diesem Beispiel "sample_app", damit Sie eine URL wie "http: // ~~~~~ / sample_project / sample_app / home" oder "http: // ~~~~~ / sample_project / sample_app / edit" angeben können Registrieren Sie das Teil nach / `.

Template Dies hängt mit der Vorlage zusammen

sample_project*
  | - sample_app*
       | - ☆templates*
             | - ☆static*· · · EIN
             | - ☆sample_app*・ ・ ・ B.

** A. Paket zum Speichern von Rendering-Dateien (CSS-Dateien und JS-Dateien) ** Neben HTML werden hier Dateien abgelegt, die für die Bildschirmkonfiguration erforderlich sind.

** B.Template-Dateispeicherpaket ** Platzieren Sie die HTML-Datei hier.

Zusammenfassung

Wenn Sie ein Framework verwenden, ist es sehr wichtig zu organisieren, wo und was geschrieben werden soll! Dieses Mal konzentrierte ich mich auf die Ordner und Dateien, die ich hier für jede MVT mit einer einfachen Struktur vorerst betrachten musste.

Recommended Posts

Djangos MVT-Beziehung zwischen Modell und Modul
Python-Pakete und -Module
Zwischen parametrisch und nicht parametrisch
Unterschied zwischen Prozess und Job
Konvertierung zwischen Unixtime und Datetime
Unterschied zwischen "categoryical_crossentropy" und "sparse_categorical_crossentropy"
Lernen Sie Python-Pakete und -Module kennen
Unterschied zwischen Regression und Klassifikation
Zusammenarbeit zwischen PTVS und Anaconda
Über Djangos Dekonstruktion und Dekonstruierbarkeit
Unterschied zwischen np.array und np.arange
Unterschied zwischen MicroPython und CPython
Erstellen und listen Sie Django-Modelle auf
Zusammenarbeit zwischen py2exe und Setup-Tools
Grenze zwischen C und Golang
Unterschied zwischen ps a und ps -a
Unterschied zwischen Return und Print-Python
Vergleich der Vorhersage von Zeitreihendaten zwischen dem SARIMA-Modell und dem Prophet-Modell