[Python] Organiser la structure de base de l'application Flask (Viser la dé-copie)

introduction

Jusqu'à présent, j'ai écrit le code flask comme" magique "sans le savoir bien, donc je vais l'étudier une fois et l'organiser. Comme objectif

―― Être capable de comprendre ce qui se passe avec la description ――Comprendre la structure grammaticale du code écrit et le faire verbaliser pour qu'il puisse être examiné plus tard.

J'essaierai de l'organiser dans ce domaine.

structure de base de l'application flask

Jetons un coup d'œil à la structure de base d'une application Web simple.

Je me suis référé ici comme une explication (le script a quelques différences) Premiers pas avec Flask - Documentation Flask Handson 1

#① Module d'importation
from flask import Flask 

#② Création d'applications Web
app = Flask(__name__) 

#③ Réglage du point final (routage)
@app.route('/')
def hello():
    return 'Hello World!'

 #④ Démarrez l'application Web~~~~
if __name__ == '__main__':
    app.run(debug=True)

Si vous exécutez ce script et accédez à "http://127.0.0.1:8000" dans votre navigateur, vous devriez voir "Hello World!" Sur l'écran. Si tout se passe bien, cela signifie que l'application Web peut être lancée localement.

Saisissez le flux et l'image approximatifs

Le script ci-dessus est divisé en quatre parties.

Lorsque nous créons une application Web avec Flask, nous allons créer différentes parties de ③. L'importation de ① est l'une des grammaires de base de python. Et ②④ est une opération de flacon, donc fondamentalement, il semble qu'il n'y ait pas besoin de changer le code, et c'est la partie qui est souvent écrite comme "magique".

Regardez de plus près chaque partie

① Module d'importation

from flask import Flask

Importation de la classe Flask du module flask. Cela vous permet de profiter des fonctionnalités de la classe Flask dans ce script.

Qu'est-ce qu'un module?

Un fichier python rempli de fonctions et de classes. Il semble bon de penser que le fichier enregistré sous le nom hogehoge.py est un module.

② Création d'applications Web

app = Flask(__name__)

Passer Flask (__ name __) et __name__ comme premier argument pour créer une instance de la classe Flask et l'assigner à ʻapp. Cette ʻapp est une image qui contient le cœur de l'application flask, et vous pouvez définir la route avec ʻapp.route () (③) ou démarrer le serveur local avec ʻapp.run () à l'avenir. Sera.

À propos de la variable globale __name__

__name__ est l'un des attributs du module et semble être une variable globale (c'est un nom étrange, n'est-ce pas? Et son identité est une variable qui stocke "où le programme est appelé et exécuté". C'est un nom étrange.

Lorsque ce fichier .py est lancé directement, le __name__ contiendra la chaîne __main__. Par contre, lorsque ce fichier est appelé par ʻimport depuis un autre script, le nom du module (nom de fichier sans extension) est entré dans name`.

(Je ne comprends toujours pas ce qui se passe quand je passe ceci au premier argument de Flask ())

③ Réglage du point final (routage)

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

Cette description définit le routage C'est une description simple, mais il semble que beaucoup de choses sont condensées.

Organisons-le en citant ici (Getting Started with Flask - Flask Handson 1 documentation).

La ligne @ app.route ('/') enregistre l'action pour l'application avec l'URL /.

En d'autres termes, lorsque nous accédons à l'URL "http://hogehoge.com/" (le chemin est /), nous créons une action "renvoyer ce type de traitement" avec une fonction et les lier un à un. Je suis. Dans cet exemple, la valeur de retour de la fonction hello () (la chaîne après return) sera affichée sur la page Web. Il semble que cette fonction s'appelle une "fonction de visualisation".

Maintenant, que représente l'étrange symbole «@» ici?

La ligne commençant par> @ s'appelle un décorateur et effectue un traitement pour la fonction ou la classe définie dans la ligne suivante. @ app.route ('/') effectue le processus de mappage de la fonction définie dans la ligne suivante avec l'URL spécifiée.

Je pense que le "décorateur" est ici une grammaire du langage Python légèrement avancée. Il semble être assez difficile de comprendre la grammaire ici, le fonctionnement de la fonction d'affichage et l'affichage du résultat sur le Web, je voudrais donc approfondir ma compréhension tout en apprenant un peu plus.

Décorateurs et fonctions de grande hauteur

"Decorator" est une méthode de description python qui peut décrire intelligemment le traitement à l'aide de "fonctions de grande hauteur". Les "fonctions de grande hauteur" sont des fonctions qui reçoivent une fonction en tant qu'argument et la traitent, et une fonction qui renvoie une fonction en tant que valeur de retour. C'est. Ici, on pense que le décorateur est utilisé pour passer la fonction hello () à la fonction de grande hauteur route () pour traitement. (Étant donné que la compréhension de ce domaine est ambiguë, veuillez indiquer si elle est erronée)

Arrangement des termes

--Routage: lier des URL avec des actions. Ici, le chemin et la fonction de vue sont liés. --Endpoint: fait référence à l'URL à laquelle accéder. --URL et chemin: pour spécifier l'emplacement du fichier. L'URL est comme un chemin absolu, une adresse sur Internet.

④ Démarrez l'application Web

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

Enfin, exécutez ʻapp.run () pour démarrer le serveur local et lancer l'application. L'instruction ʻif détermine "si ce programme a été exécuté directement". Comme vu dans (2), lorsque le fichier est exécuté directement en tant que script, «main» est assigné à «name». En d'autres termes, ici, lorsque le programme est exécuté directement, ʻapp.run () `est exécuté et l'application est lancée.

méthode run ()

Arrangement des termes

--Hôte: (sous résumé)

(Remarques) Norme WSGI

en conclusion

Il n'est pas nécessaire qu'un vrai débutant en soit conscient, mais je pense que si vous approfondissez votre compréhension pour passer à l'étape suivante, vous pourrez en faire plus. La seconde mi-temps a été assez rapide, je vais donc la corriger à nouveau en fonction de mon niveau de compréhension.

Lisez le document. Démarrage rapide - Documentation Flask v0.5.1 API — Flask Documentation (1.0.x)

Recommended Posts

[Python] Organiser la structure de base de l'application Flask (Viser la dé-copie)
La structure des dossiers de Flask est résumée
Pandas du débutant, par le débutant, pour le débutant [Python]
Cours de base Python (à la fin de 15)
L'histoire selon laquelle le coût d'apprentissage de Python est faible
Traitement d'image? L'histoire du démarrage de Python pour
Ceci est le seul examen de base de Python ~ 1 ~
Ceci est le seul examen de base de Python ~ 2 ~
Code pour vérifier le fonctionnement de Python Matplot lib
Ceci est le seul examen de base de Python ~ 3 ~
Histoire de base de l'héritage en Python (pour les débutants)
Construisez un serveur API pour vérifier le fonctionnement de l'implémentation frontale avec python3 et Flask
le zen de Python
Résumé du flux de base de l'apprentissage automatique avec Python
Connaissance de base de Python
Impressions de passer l'examen de base de la certification d'ingénieur Python 3
[Introduction à Python] Utilisation basique de la bibliothèque matplotlib
Vérifiez le fonctionnement de Python pour .NET dans chaque environnement
J'ai écrit la grammaire de base de Python dans Jupyter Lab
[Note] Liste des commandes de base pour la construction d'un environnement python / conda
Prise en compte des décorateurs Python du type qui passe des variables
(Pour moi-même) Flask_6 (Open db depuis python, Mysql basic (phpMyAdmin))
[Python] Les principales faiblesses et inconvénients de Google Colaboratory [Pour les débutants]
Google recherche la chaîne sur la dernière ligne du fichier en Python
Vers la retraite de Python2
Grammaire de base Python pour les débutants
Utilisation basique de la f-string Python
À propos des fonctionnalités de Python
Le pouvoir des pandas: Python
Mémorandum de l'outil de gestion de paquets Python ez_setup
Un chercheur d'une société pharmaceutique a résumé les règles de description de base de Python
Comment modifier le niveau de journalisation d'Azure SDK pour Python
Envelopper (partie de) la bibliothèque AtCoder en Cython pour une utilisation en Python
Comment connaître la structure interne d'un objet en Python
L'histoire de la création d'un pilote standard pour db avec python.
[Parlez de la structure de dessin de plotly] Visualisation dynamique avec plotly [python]
Version pratique de l'automatisation des tests des applications Flutter avec Appium (Python)
python Remarque: map -faire la même chose pour chaque élément de la liste
Un mémorandum concernant l'acquisition de l'examen de base de certification d'ingénieur Python3
L'histoire de Python et l'histoire de NaN
[Python] La pierre d'achoppement de l'importation
First Python 3 ~ Le début de la répétition ~
Existence du point de vue de Python
pyenv-changer la version python de virtualenv
Ensuite, utilisez Python (Flask) pour Heroku!
À propos du type de base de Go
[Python] Comprendre le potentiel_field_planning de Python Robotics
Revue des bases de Python (FizzBuzz)
Grammaire de base du système Python3 (dictionnaire)
Voir python pour la première fois
À quoi sert le trait de soulignement Python (_)?
Premiers pas avec python3
[Python] Lire le code source de Flask
Enregistrement de l'introduction de Python pour les nouveaux arrivants
À propos de la liste de base des bases de Python
Commande pour le répertoire courant Python
Etude de base d'OpenCV avec Python
Apprenez les bases de Python ① Débutants élémentaires
Comparer la grammaire de base de Python et Go d'une manière facile à comprendre