[Python] Organisieren Sie die Grundstruktur der Flask-App (Ziel des Entkopierens)

Einführung

Bis jetzt habe ich den "Flask" -Code als "Magie" geschrieben, ohne es gut zu wissen, also werde ich ihn einmal untersuchen und organisieren. Als Ziel

――Können Sie verstehen, was mit der Beschreibung passiert

Ich werde versuchen, es so zu organisieren, dass es auf diesen Bereich abzielt.

Grundstruktur der Kolben App

Werfen wir einen Blick auf die Grundstruktur einer einfachen Web-App.

Ich habe hier auf eine Erklärung verwiesen (das Skript weist einige Unterschiede auf). Erste Schritte mit Flask - Flask Handson 1-Dokumentation

#① Modul importieren
from flask import Flask 

#② Erstellung von Webanwendungen
app = Flask(__name__) 

#③ Endpunkteinstellung (Routing)
@app.route('/')
def hello():
    return 'Hello World!'

 #④ Starten Sie die Webanwendung~~~~
if __name__ == '__main__':
    app.run(debug=True)

Wenn Sie dieses Skript ausführen und in Ihrem Browser auf "http://127.0.0.1:8000" zugreifen, sollte "Hallo Welt!" Auf dem Bildschirm angezeigt werden. Wenn alles gut geht, kann die Web-App lokal gestartet werden.

Erfassen Sie den rauen Fluss und das Bild

Das obige Skript ist grob in vier Teile unterteilt.

Wenn wir eine Webanwendung mit Flask erstellen, erstellen wir verschiedene Teile von ③. Das Importieren von ① ist eine der grundlegenden Grammatiken von Python. Und ②④ ist eine Kolbenoperation, daher scheint es im Grunde genommen nicht notwendig zu sein, den Code zu ändern, und dies ist der Teil, der oft als "Magie" geschrieben wird.

Schauen Sie sich jedes Teil genauer an

① Modul importieren

from flask import Flask

Importieren der Klasse "Flask" des Moduls "Flask". Auf diese Weise können Sie die Funktionalität der Klasse "Flask" in diesem Skript nutzen.

Was ist ein Modul?

Eine Python-Datei voller Funktionen und Klassen. Es scheint gut zu denken, dass die unter dem Namen "hogehoge.py" gespeicherte Datei ein Modul ist.

② Erstellung von Webanwendungen

app = Flask(__name__)

Wir erstellen eine Instanz der Flask-Klasse, indem wir "Flask (__ name __)" und "name" als erstes Argument übergeben und sie "app" zuweisen. Diese App ist ein Image, das den Kern der Kolben-App enthält. Sie können die Route mit app.route () (③) definieren oder den lokalen Server mitapp.run ()starten Wird sein.

Informationen zur globalen Variablen __name__

__name__ ist eines der Attribute des Moduls und scheint eine globale Variable zu sein (es ist ein seltsamer Name, nicht wahr? Und seine Identität ist eine Variable, die speichert, "wo das Programm aufgerufen und ausgeführt wird". Es ist ein seltsamer Name.

Wenn diese .py-Datei direkt gestartet wird, enthält der __name__ die Zeichenfolge __main__. Wenn diese Datei hingegen "importiert" und von einem anderen Skript aufgerufen wird, enthält "name" den Modulnamen (Dateiname ohne Erweiterung).

(Ich verstehe immer noch nicht, was passiert, wenn ich dies an das erste Argument von Flask () übergebe.)

③ Endpunkteinstellung (Routing)

@app.route('/') 
def hello():
    return 'Hello World!'

Diese Beschreibung definiert das Routing Es ist eine einfache Beschreibung, aber es scheint, dass viele Dinge verdichtet sind.

Lassen Sie es uns organisieren, indem Sie von hier aus zitieren (Erste Schritte mit Flask - Flask Handson 1-Dokumentation).

Die Zeile> @ app.route ('/') registriert die Aktion, die der URL / für die App entspricht.

Mit anderen Worten, wenn wir auf die URL "http://hogehoge.com/" zugreifen (Pfad ist "/"), erstellen wir eine Aktion "Ich werde diese Art der Verarbeitung zurückgeben" mit einer Funktion und verknüpfen sie eins zu eins. Ich bin. In diesem Beispiel wird der Rückgabewert der Funktion "hello ()" (die Zeichenfolge nach "return") auf der Webseite angezeigt. Es scheint, dass diese Funktion als "Ansichtsfunktion" bezeichnet wird.

Was bedeutet nun das seltsame Symbol "@" hier?

Die Zeile, die mit> @ beginnt, wird als Dekorator bezeichnet und verarbeitet die in der nächsten Zeile definierte Funktion oder Klasse. @ app.route ('/') führt den Vorgang des Zuordnens der in der nächsten Zeile definierten Funktion zur angegebenen URL durch.

Ich denke, der "Dekorateur" hier ist eine leicht fortgeschrittene Python-Grammatik. Es scheint ziemlich schwierig zu sein, die Grammatik hier zu verstehen und wie die Ansichtsfunktion funktioniert und das Ergebnis im Web angezeigt wird. Deshalb möchte ich mein Verständnis vertiefen und etwas mehr lernen.

Dekorateure und Hochhausfunktionen

"Decorator" ist eine Python-Beschreibungsmethode, die die Verarbeitung mithilfe der "High-Rise-Funktion" intelligent beschreiben kann. "High-Rise-Funktion" ist eine Funktion, die eine Funktion als Argument empfängt und verarbeitet und eine Funktion, die eine Funktion als Rückgabewert zurückgibt. Das ist. Hier wird angenommen, dass der Dekorateur verwendet wird, um die Funktion "Hallo ()" zur Verarbeitung an die Hochhausfunktion "Route ()" zu übergeben. (Da das Verständnis dieses Bereichs nicht eindeutig ist, weisen Sie bitte darauf hin, wenn es falsch ist.)

Vereinbarung von Begriffen

--Routing: Verknüpfen von URLs mit Aktionen. Hier sind der Pfad und die Ansichtsfunktion verknüpft. --Endpoint: Bezieht sich auf die URL, auf die zugegriffen werden soll. --URL und Pfad: Geben Sie den Speicherort der Datei an. Die URL ist wie ein absoluter Pfad, eine Adresse im Internet. --View-Funktion: Eine Funktion, die beschreibt, welche Art von Operation als Antwort auf eine Anforderung zurückgegeben wird.

④ Starten Sie die Webanwendung

if __name__ == '__main__':
    app.run(debug=True)

Führen Sie abschließend "app.run ()" aus, um den lokalen Server zu starten und die App zu starten. Die if-Anweisung bestimmt, ob dieses Programm direkt ausgeführt wurde. Wie in (2) zu sehen ist, wird, wenn die Datei direkt als Skript ausgeführt wird, "main" "name" zugewiesen. Mit anderen Worten, wenn das Programm direkt ausgeführt wird, wird app.run () ausgeführt und die App wird gestartet.

run () Methode

Vereinbarung von Begriffen

(Anmerkungen) WSGI-Standard

abschließend

Es ist nicht notwendig, dass sich ein echter Anfänger dessen bewusst ist, aber ich bin der Meinung, dass Sie mehr tun können, wenn Sie Ihr Verständnis vertiefen, um mit dem nächsten Schritt fortzufahren. Die zweite Hälfte war ziemlich schnell, also werde ich sie nach meinem Verständnis wieder reparieren.

Lesen Sie das Dokument. Schnellstart - Dokumentation zu Flat v0.5.1 API — Flask Documentation (1.0.x)

Recommended Posts

[Python] Organisieren Sie die Grundstruktur der Flask-App (Ziel des Entkopierens)
Die Ordnerstruktur von Flask ist zusammengefasst
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Python-Grundkurs (Ende 15)
Die Geschichte, dass die Lernkosten von Python niedrig sind
Bildverarbeitung? Die Geschichte, Python für zu starten
Dies ist die einzige grundlegende Überprüfung von Python ~ 1 ~
Dies ist die einzige grundlegende Überprüfung von Python ~ 2 ~
Code zum Überprüfen des Betriebs von Python Matplot lib
Dies ist die einzige grundlegende Überprüfung von Python ~ 3 ~
Grundlegende Geschichte der Vererbung in Python (für Anfänger)
Erstellen Sie einen API-Server, um den Betrieb der Front-Implementierung mit Python3 und Flask zu überprüfen
der Zen von Python
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Grundkenntnisse in Python
Eindrücke von der Python 3 Engineer Certification Basic-Prüfung
[Einführung in Python] Grundlegende Verwendung der Bibliothek matplotlib
Überprüfen Sie die Funktionsweise von Python für .NET in jeder Umgebung
Ich habe die grundlegende Grammatik von Python in Jupyter Lab geschrieben
[Hinweis] Liste der grundlegenden Befehle zum Erstellen einer Python / Conda-Umgebung
Berücksichtigung von Python-Dekoratoren des Typs, der Variablen übergibt
[Python] Die größten Schwächen und Nachteile von Google Colaboratory [Für Anfänger]
Google sucht mit Python nach der Zeichenfolge in der letzten Zeile der Datei
Auf dem Weg zum Ruhestand von Python2
Grundlegende Python-Grammatik für Anfänger
Grundlegende Verwendung von Python-F-String
Über die Funktionen von Python
Die Kraft der Pandas: Python
Memorandum des Python-Paketverwaltungstools ez_setup
Ein Forscher eines Pharmaunternehmens fasste die grundlegenden Beschreibungsregeln von Python zusammen
So ändern Sie die Protokollstufe von Azure SDK für Python
Wrap (Teil der) AtCoder Library in Cython zur Verwendung in Python
Wie Sie die interne Struktur eines Objekts in Python kennen
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.
[Sprechen Sie über die Zeichnungsstruktur von plotly] Dynamische Visualisierung mit plotly [Python]
Praktische Version zur Automatisierung des Testens von Flutter-Apps mit Appium (Python)
Python Hinweis: Map - Machen Sie dasselbe für jedes Element der Liste
Ein Memorandum zum Erwerb der Grundprüfung für die Python3-Ingenieurzertifizierung
Die Geschichte von Python und die Geschichte von NaN
[Python] Der Stolperstein des Imports
Erster Python 3 ~ Der Beginn der Wiederholung ~
Existenz aus Sicht von Python
pyenv-change die Python-Version von virtualenv
Verwenden Sie als nächstes Python (Flask) für Heroku!
Über den Grundtyp von Go
[Python] Die potenzielle Feldplanung von Python Robotics verstehen
Überprüfung der Grundlagen von Python (FizzBuzz)
Grundlegende Grammatik des Python3-Systems (Wörterbuch)
Siehe Python zum ersten Mal
Wofür ist der Python-Unterstrich (_)?
Erste Schritte mit Python3
[Python] Lesen Sie den Flask-Quellcode
Aufzeichnung der Python-Einführung für Neulinge
Informationen zur Grundlagenliste der Python-Grundlagen
Befehl für das aktuelle Verzeichnis Python
Grundlegendes Studium von OpenCV mit Python
Lernen Sie die Grundlagen von Python ① Grundlegende Anfänger
Ein leicht verständlicher Vergleich der grundlegenden Grammatik von Python und Go