[PYTHON] Utilisation basique de flask-classy

Que faire dans cet article

Non couvert dans cet article

Les articles suivants ne sont pas écrits en utilisant flask-classy sur une base régulière, mais sont écrits tout en étudiant au besoin. Si vous constatez des erreurs, veuillez soumettre une demande de modification ou les signaler dans les commentaires. Je vous remercie.

Qu'est-ce que la classe flacon

L'un des frameworks Web légers disponibles en python est flask.

Lorsque vous utilisez flask, vous créez généralement une application à l'aide de décorateurs et de fonctions, mais lorsque vous essayez de créer une grande application Web sur plusieurs fichiers, utilisez un type appelé Blueprint. Vous devez jouer avec Gonyo Gonyo.

Flask-Classy peut introduire une méthode unifiée de routage sans les tracas de la déconner.

Page Officielle

https://pythonhosted.org/Flask-Classy/

Je vais le décrire grossièrement en référence à la page ci-dessus.

Installation

pip install flask-classy

Utilisation minimale

  1. Créez une instance de la classe Flask selon l'utilisation normale de flask
  2. Créez une classe qui hérite de FlaskView.
  3. ** Utilisez la méthode de classe register``` de la classe créée avec une instance de la classe Flask comme argument **
  4. Lancer l'application

from flask import Flask
from flask.ext.classy import FlaskView

app = Flask(__name__)

class HelloView(FlaskView):
    def index(self):
        return "hello world"

HelloView.register(app)

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

Si vous lancez le fichier ci-dessus à partir de la ligne de commande, vous devriez pouvoir accéder à localhost: 5000 / hello et voir la chaîne `` `` hello world.

Veuillez noter que le processus d'enregistrement de `` 3 '' est ignoré dans les exemples suivants.

Conventions de routage et de dénomination

Convention de dénomination de classe

flaskviewPour les noms de classe qui héritent de, comme suffixeviewPeut être utilisé.

helloviewL'url correspondant à/hello/Ce sera.

"Il peut être utilisé", donc il n'y a pas de problème même si vous n'utilisez pas de suffixe

flaskviewHéritéhelloMême si vous créez une classe, l'url correspondante est/hello/Ce sera.

Convention de dénomination des méthodes

Bien que cela apparaisse dans l'utilisation minimale, les méthodes suivantes sont prédéterminées pour être acheminées dans les classes qui héritent de FlaskView.

Nom de la méthode routage méthode http
index /Définition de classe/ get
get /Définition de classe/ get
post /Définition de classe/ post
put /Définition de classe/ put
patch /Définition de classe/ patch
delete /Définition de classe/ delete

En plus des conventions de dénomination Python habituelles, les noms de méthode suivants sont utilisés dans FlaskView et doivent être évités.

Les noms de méthode autres que ceux ci-dessus sont accessibles comme suit.

URL méthode http
/Définition de classe/Nom de la méthode get

Il existe également d'autres noms de méthodes spéciaux définis.

Nom de la méthode une fonction
before_request Exécuté avant d'exécuter la méthode définie dans la classe
before_Nom de la méthode cible Exécuté avant d'exécuter la méthode cible définie dans la classe
after_request Exécuté après l'exécution de la méthode définie dans la classe
after_Nom de la méthode cible Exécuté après l'exécution de la méthode cible définie dans la classe

cycle de la vie

  1. @app.before_request
  2. class.before_request
  3. méthode class.before_ target
  4. classe. Méthode cible
  5. méthode class.after_ target
  6. class.after_request
  7. @app.after_request

Sera de l'ordre de

Remplacement de routage

L'URL est déterminée par le nom de la classe et le nom de la fonction, mais voici quelques mesures pour l'éviter.

Remplacer le routage à partir du nom de la classe

Il y a deux façons

Déclarez `` route_base '' comme variable de classe

class HelloView(FlaskView):
    route_base='/'

Passez route_base``` pour vous inscrire comme argument

HelloView.register(app, route_base='/')

Les deux écrasent / hello```, qui devrait être défini à partir du nom de la classe, et le rendent accessible avec / ``.

Remplacer le routage de la méthode

C'est une façon

from flask.ext.classy import FlaskView, route

class HelloView(FlaskView):
	@route('/hoge/')
    def index(self):
        return 'hello'

Comme mentionné ci-dessus, pour la méthode de la classe qui hérite de FlaskView, utilisez `` `` route défini dans flask.ext.classy``` Vous pouvez écraser le routage en le décorant.

Dans le cas de l'exemple ci-dessus, il est accessible lorsque l'url est `` / hello / hoge / ''.

Méthode HTTP

flask.ext.classsy route peut prendre exactement les mêmes arguments que flask route.



 ** Tout comme un flacon normal, vous ne pouvez obtenir l'accès GET qu'en définissant des méthodes et un routage. ** **

 Si vous souhaitez ajouter une méthode http autre que GET, passez une liste avec le nom `` `` methods``` à l'argument de `` `` @ route```.

 Pour le moment, il semble que n'importe quelle chaîne de caractères puisse entrer dans l'élément de liste (vérification requise), mais je pense que c'est correct mais pas rentable.
 Mettons une méthode HTTP normale.


 Voici un exemple.


```python3
from flask.ext.classy import FlaskView, route

class HelloView(FlaskView):
	@route('/index/', methods=['GET','POST'])
    def index(self):
        return 'hello'

Comme mentionné ci-dessus, en ajoutant des `` méthodes '', vous pouvez accéder avec la méthode HTTP correspondante.

Recommended Posts

Utilisation basique de flask-classy
Utilisation de base de Jinja2
Utilisation de base de SQL Alchemy
Utilisation super basique de pytest
Résumé de l'utilisation de base de Pandas
Utilisation basique de la f-string Python
Utilisation de base de Btrfs dans Arch Linux
Fonctionnement de base des pandas
Résumé de l'utilisation de pyenv
Utilisation des locaux Python ()
Fonctionnement de base des Pandas
Connaissance de base de Python
[Introduction à Python] Utilisation de base des expressions lambda
Prenez note de la liste des utilisations de base de Pandas
(Débutant) Utilisation de base du magasin de données de Google App Engine
[Introduction à Python] Utilisation basique de la bibliothèque matplotlib
Résumé d'utilisation pratique de Flask
Flux de base de détection d'anomalies
notes d'utilisation de la commande virtualenv Basic
Utilisation (minimale) de django logger
Principes de base de XPath (1) - Concept de base de XPath
Exemple d'utilisation de pickle Python
Graphique de base à une ligne de HoloViews
[Python] Utilisation correcte de la jointure
Index d'utilisation de certains pandas
[Dernière version 2020/06] Utilisation basique de la poésie, un outil de gestion des dépendances pour python
Résumé des connaissances de base de PyPy Partie 1
Résumé de l'implémentation de base par PyTorch
Notes d'utilisation faciles pour Anaconda (conda)
À propos du type de base de Go
Grammaire de base du système Python3 (dictionnaire)
[python] Utilisation correcte de l'instruction if
[Python] Modèle de base et utilisation de l'instruction if (opérateur de comparaison et opérateur booléen)
Etude de base d'OpenCV avec Python
[Linux] Examen des commandes de base fréquemment utilisées 2
Acquisition de la consommation d'énergie passée China Electric Power Edition
Gratter l'historique d'utilisation du cycle communautaire
Écriture de base de divers langages de programmation (auto-mémo)
L'utilisation de TensorBoard a légèrement changé
Grammaire de base de la série Python3 (chaîne de caractères)
Grammaire de base de la série Python3 (liste, tapple)
[Linux] Examen des commandes de base fréquemment utilisées
Utilisation d'opérateurs non logiques de ou en python
Cours de base Python (à la fin de 15)
Évaluation des performances de base du langage de programmation
Grammaire de base du système Python3 (notation incluse)
Comment installer le tissu et comment l'utiliser
Mémo de développement BESS Partie 01: Installation et utilisation de base de BESS