[PYTHON] Essayez d'utiliser le framework d'application Web Flask

Ruby est un langage de programmation flexible et possède un cadre d'application Web pratique et léger comme Sinatra. Jusqu'à présent, en tant que langage d'analyse j'avais l'habitude de visualiser des statistiques et des données principalement en Python, mais bien sûr, Python a également une grande variété de cadres d'applications Web. Il y a du travail.

Si vous souhaitez fournir un mécanisme pour effectuer des calculs numériques dans Python en tant que système Web, il est plus cohérent de créer le composant WebPart dans le même langage plutôt que d'utiliser un autre langage.

Donc cette fois, j'utiliserai Flask, un petit framework Python, pour créer une application web très simple.

Flask a un guide d'utilisation convivial traduit en japonais. https://a2c.bitbucket.io/flask/

Il est écrit si soigneusement que quiconque peut créer un système Web en lisant ce document et en déplaçant ses mains.

Cependant, même cela est beaucoup, donc si vous n'êtes pas bon en programmation, il peut être difficile de lire ceci. Même si vous n'avez pas le temps, ce sera un problème. Donc, en guise d'introduction simple, j'aimerais créer rapidement une application qui envoie simplement des données texte et renvoie les résultats.

Tout ce dont vous avez besoin est un environnement Python avec Flask installé. Je vais omettre la construction de l'environnement car vous pouvez lire Autres articles.

Le plus grand mérite d'utiliser Python est le système de calcul numérique et d'analyse de données représenté par pandas et NumPy. C'est la première fois dans la bibliothèque de. Par conséquent, nous utiliserons également NumPy dans l'exemple d'application.

Mettre en œuvre le programme souhaité

Tout d'abord, créons la partie de l'objectif que vous souhaitez atteindre via le Web. Aussi appelée logique métier.

sample.py


#Importez les bibliothèques requises telles que Flask
from flask import Flask, render_template, request, redirect, url_for
import numpy as np

#Instanciez votre nom en tant qu'application
app = Flask(__name__)

#Une méthode pour afficher les messages au hasard
def picked_up():
    messages = [
        "Bonjour, veuillez entrer votre nom",
        "Salut! quel est votre nom?",
        "Dis-moi ton nom"
    ]
    #NumPy aléatoire.Extraire au hasard du tableau avec choix
    return np.random.choice(messages)

#Écrire le routage pour les applications Web à partir d'ici
#Que se passe-t-il lorsque vous accédez à l'index
@app.route('/')
def index():
    title = "Bienvenue"
    message = picked_up()
    # index.Rendre HTML
    return render_template('index.html',
                           message=message, title=title)

# /Que se passe-t-il lorsque vous accédez à la publication
@app.route('/post', methods=['GET', 'POST'])
def post():
    title = "Bonjour"
    if request.method == 'POST':
        #Obtenez le «nom» du formulaire de demande
        name = request.form['name']
        # index.Rendre HTML
        return render_template('index.html',
                               name=name, title=title)
    else:
        #Si vous souhaitez effectuer une redirection en raison d'une erreur, etc., cela ressemble à ceci
        return redirect(url_for('index'))

if __name__ == '__main__':
    app.debug = True #Activer le mode de débogage
    app.run(host='0.0.0.0') #Accessible de n'importe où

Demandez un nom sur l'écran supérieur et affichez-le sur l'écran lorsqu'il est envoyé. C'est le seul programme. Vous pouvez voir que c'est presque un programme Python normal, sauf pour le routage.

Utilisez la méthode render_template () pour rendre le modèle. Si vous attachez l'objet que vous voulez passer à ce moment comme argument, il sera disponible dans la vue.

Mettre en œuvre l'écran

L'écran est également appelé la vue. Comme vous pouvez le voir dans le guide de l'utilisateur, Flask dispose d'un moteur de modèle appelé Jinja2.

Jinja2 http://jinja.pocoo.org/docs/dev/

C'est fondamentalement du HTML simple, mais avec une notation spéciale entre les deux, vous pouvez afficher les objets passés par Python et gérer des choses comme les conditions et les boucles.

Préparez la mise en page

Écrire du CSS et des en-têtes pour charger JavaScript sur chaque écran est fastidieux et inutile. Par conséquent, dans une application Web, il est courant de préparer un HTML pour la mise en page tel que layout.html uniquement pour la partie commune.

Cette fois, nous utiliserons le framework CSS Bootstrap. Flask place des fichiers comme CSS et JavaScript dans le répertoire / static. Par conséquent, décompressez le fichier .zip Bootstrap téléchargé depuis le site officiel (http://getbootstrap.com/) et déployez-le sous statique.

Préparez également un répertoire appelé templates et placez HTML sous ce répertoire.

layout.html


<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    {% if title %}
      <title>{{ title }}</title>
    {% else %}
      <title>Bootstrap 101 Template</title>
    {% endif %}
    <!-- Bootstrap -->
    <link href="/static/css/bootstrap.min.css" rel="stylesheet">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
    {% block content %}{% endblock %}
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="/static/js/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="/static/js/bootstrap.min.js"></script>
  </body>
</html>

En gros, j'ai écrit le Bootstrap Basic Template tel quel.

La partie incluse dans {% ...%} est Jinja2. Dans cet exemple, si le titre existe en tant qu'instance, il sera affiché et un bloc nommé content sera inséré.

Créer des pages individuelles

Cette fois, c'est facile car il n'y a qu'une seule page index.html.

Le premier {% extend "layout.html"%} étend layout.html. Il ne vous reste plus qu'à écrire les parties autres que la mise en page. De plus, en l'incluant dans {% block content%} {% endblock%}, il sera traité comme un bloc nommé content. Cela le rendra dans la partie bloc de contenu de la mise en page.

index.html


{% extends "layout.html" %}
{% block content %}
  <!-- Form
  ================================================== -->
<div class="form">
  <div class="container">
    <div class="row">
      <div class="col-md-12">
        <p class="lead">
          {% if name %}
Bonjour{{ name }}M.
          {% else %}
            {{ message }}
          {% endif %}
        </p>
        <form action="/post" method="post" class="form-inline">
          <label for="name">Nom</label>
          <input type="text" class="form-control" id="name" name="name" placeholder="Name">
          <button type="submit" class="btn btn-default">Envoyer</button>
        </form>
      </div>
    </div>
  </div>
</div>
{% endblock %}

S'il existe une instance de nom, affichez le nom, sinon affichez un message.

Lancez l'application

L'application est maintenant terminée. Après cela, si vous faites quelque chose comme python app.py, l'application Web démarrera sur le port 5000 sur localhost.

1.png

La première page était affichée en toute sécurité. Le message est sélectionné au hasard et affiché par NumPy. Entrez votre nom ici et appuyez sur le bouton Soumettre pour l'envoyer à / post.

2.png

Récupérez le nom dans le formulaire de demande et affichez index.html. Cela affichera le nom que vous avez entré à l'écran.

Résumé

Vous pouvez voir que vous pouvez facilement créer une application Web avec Python. On peut dire que le fait de pouvoir décrire non seulement la partie analyse mais aussi d'autres parties comme le web dans le même langage est différent du langage R.

Lorsque vous souhaitez préparer un système informatique avec une fonction de réponse simple, il est pratique d'étendre le programme Python et de l'implémenter en tant qu'application Web telle quelle.

Vous pouvez facilement stocker les données envoyées dans la base de données et lire les données de la base de données en combinant SQLAlchemy. Je pense que cela seul m'a donné le sentiment qu'une application pratique peut être créée.

Le code source de cet article est disponible sur ici.

Recommended Posts

Essayez d'utiliser le framework d'application Web Flask
Essayez d'utiliser le framework Web Python Tornado Partie 1
Essayez d'utiliser le framework Web Python Tornado Partie 2
Créer une application Web avec Flask ②
Créer une application Web avec Flask ①
Créer une application Web avec Flask ③
Créer une application Web avec Flask ④
Essayez d'utiliser le framework Web Python Django (2) - Regardez setting.py
Application Web utilisant Bottle (1)
Essayez d'utiliser le framework web de Python Django (1) - De l'installation au démarrage du serveur
Comment créer une application à partir du cloud à l'aide du framework Web Django
Développement d'applications WEB à l'aide de django-development partie 1-
(Python) Essayez de développer une application Web en utilisant Django
Essayez d'utiliser l'API Twitter
Développement d'applications Web avec Flask
Essayez d'utiliser l'API Twitter
Essayez d'utiliser l'API PeeringDB 2.0
Application Web avec Python + Flask ② ③
Application Web avec Python + Flask ④
Développement d'une application WEB avec Django [Django startup]
Développement d'une application WEB avec Django [Ajout d'application]
[Serveur de location Sakura] Essayez d'utiliser flask.
Essayez d'utiliser le module Python Cmd
Application Web réalisée avec Python + Flask (en utilisant VScode) # 1-Construction d'environnement virtuel-
Essayez d'utiliser l'API Wunderlist en Python
Développement d'une application WEB avec Django [Définition de modèle]
Développement d'une application WEB avec Django [Paramètre initial]
Essayez d'utiliser l'API Kraken avec Python
Essayez d'utiliser le LiDAR de 6 $ de réduction (Camsense X1)
Essayez d'utiliser la bande HL dans l'ordre
Développement d'applications WEB à l'aide de django-Construction d'environnement de développement-
Essayez d'utiliser l'appareil photo avec OpenCV de Python
Essayez l'analyse de cluster par K-means
Développement d'une application WEB avec Django [Traitement des requêtes]
Développement d'une application WEB avec Django [modèle supplémentaire]
Créer une application à l'aide de l'API Spotify
J'ai essayé de comparer le cadre d'application Web
Je souhaite créer une application Web en utilisant React et Python flask
Implémentez une application simple avec Python full scratch sans utiliser de framework web.
Essayez d'écrire du code à partir de 1 en utilisant le chainer du cadre d'apprentissage automatique (édition mnist)
Essayez d'utiliser Tkinter
Essayez d'utiliser docker-py
J'ai comparé la vitesse de l'écho du framework web en langage go et du flask du framework web python
Essayez d'utiliser Blueprint avec Flask pour séparer les contrôleurs
Essayez d'utiliser Cookiecutter
Essayez d'utiliser PDFMiner
Python Web Framework Django vs Pyramid vs Flask Décembre 2015
Accédez à l'API Web à l'aide de requêtes Exemple: Flickr
Développement d'une application WEB avec Django [Création de l'écran d'administration]
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Python: essayez d'utiliser l'interface utilisateur sur Pythonista 3 sur iPad
Le jour où un débutant qui a commencé à programmer pendant deux mois et demi a créé une application web avec Flask
Essayez d'utiliser jieba, un moteur d'analyse morphologique chinois
Essayez d'utiliser des géopandas
Essayez d'utiliser Selenium
Essayez d'utiliser scipy
Paramètres de l'application Flask
Répondre à l'image redimensionnée à l'aide de Flask et PILImage
Essayez d'utiliser LINE Notify pour le moment
Essayez d'utiliser pandas.DataFrame