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.
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.
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.
É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é.
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.
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.
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.
Récupérez le nom dans le formulaire de demande et affichez index.html. Cela affichera le nom que vous avez entré à l'écran.
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.