[PYTHON] Versuchen Sie es mit dem Webanwendungsframework Flask

Ruby ist eine flexible Programmiersprache mit praktischen und leichten Webanwendungs-Frameworks wie Sinatra. Bisher als Analysesprache Ich habe Statistiken und Daten hauptsächlich in Python visualisiert, aber Python verfügt natürlich auch über eine Vielzahl von Webanwendungsrahmen. Es gibt Arbeit.

Wenn Sie einen Mechanismus zum Ausführen numerischer Berechnungen in Python als Websystem bereitstellen möchten, ist es konsistenter, das Webpart in derselben Sprache zu erstellen, als eine andere Sprache zu verwenden.

Dieses Mal verwende ich Flask, ein kleines Python-Framework, um eine sehr einfache Webanwendung zu erstellen.

Flask hat eine freundliche Bedienungsanleitung, die ins Japanische übersetzt wurde. https://a2c.bitbucket.io/flask/

Es ist so sorgfältig geschrieben, dass im Grunde jeder ein Websystem erstellen kann, indem er dieses Dokument liest und seine Hände bewegt.

Aber auch das ist viel. Wenn Sie nicht gut programmieren können, kann es dennoch schwierig sein, dies zu lesen. Selbst wenn Sie nicht die Zeit haben, wird es ein Ärger sein. Als einfache Einführung möchte ich schnell eine App erstellen, die einfach Textdaten sendet und die Ergebnisse zurückgibt.

Sie benötigen lediglich eine Python-Umgebung mit installiertem Flask. Ich werde die Umgebungskonstruktion weglassen, da Sie [Andere Artikel] lesen können (http://qiita.com/ynakayama/items/2a4d4802c93eb5c40eab).

Der größte Vorteil der Verwendung von Python ist das numerische Berechnungs- und Datenanalysesystem, das von pandas und NumPy dargestellt wird. Es ist das erste Mal in der Bibliothek von. Daher werden wir NumPy auch in der Beispielanwendung verwenden.

Implementieren Sie das gewünschte Programm

Lassen Sie uns zunächst den Teil des Zwecks erstellen, den Sie über das Web erreichen möchten. Wird auch als Geschäftslogik bezeichnet.

sample.py


#Importieren Sie die erforderlichen Bibliotheken wie Flask
from flask import Flask, render_template, request, redirect, url_for
import numpy as np

#Instanziieren Sie Ihren Namen als App
app = Flask(__name__)

#Eine Methode zum zufälligen Anzeigen von Nachrichten
def picked_up():
    messages = [
        "Hallo, bitte geben Sie Ihren Namen ein",
        "Hallo! wie heißt du?",
        "Sag mir deinen Namen"
    ]
    #NumPy zufällig.Zufällig aus dem Array mit Auswahl abrufen
    return np.random.choice(messages)

#Schreiben Sie von hier aus das Routing für Webanwendungen
#Was passiert, wenn Sie auf den Index zugreifen?
@app.route('/')
def index():
    title = "Herzlich willkommen"
    message = picked_up()
    # index.HTML rendern
    return render_template('index.html',
                           message=message, title=title)

# /Was passiert, wenn Sie auf die Post zugreifen?
@app.route('/post', methods=['GET', 'POST'])
def post():
    title = "Hallo"
    if request.method == 'POST':
        #Holen Sie sich den "Namen" aus dem Anfrageformular
        name = request.form['name']
        # index.HTML rendern
        return render_template('index.html',
                               name=name, title=title)
    else:
        #Wenn Sie aufgrund eines Fehlers usw. umleiten möchten, sieht es so aus
        return redirect(url_for('index'))

if __name__ == '__main__':
    app.debug = True #Aktivieren Sie den Debug-Modus
    app.run(host='0.0.0.0') #Von überall zugänglich

Fordern Sie auf dem oberen Bildschirm einen Namen an und zeigen Sie ihn beim Senden auf dem Bildschirm an. Das ist das einzige Programm. Sie können sehen, dass es fast ein normales Python-Programm ist, außer für das Routing.

Verwenden Sie die Methode render_template (), um die Vorlage zu rendern. Wenn Sie das Objekt, das Sie zu diesem Zeitpunkt übergeben möchten, als Argument anhängen, ist es in der Ansicht verfügbar.

Implementieren Sie den Bildschirm

Der Bildschirm wird auch als Ansicht bezeichnet. Wie Sie im Benutzerhandbuch sehen können, verfügt Flask über eine Vorlagen-Engine namens Jinja2.

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

Es ist im Grunde genommen einfaches HTML, aber mit einer speziellen Notation dazwischen können Sie die von Python übergebenen Objekte anzeigen und Dinge wie Bedingungen und Schleifen verarbeiten.

Bereiten Sie das Layout vor

Das Schreiben von CSS und Headern zum Laden von JavaScript auf jedem Bildschirm ist mühsam und verschwenderisch. Daher ist es in einer Webanwendung üblich, einen HTML-Code nur für den gemeinsamen Teil für das Layout wie layout.html vorzubereiten.

Dieses Mal verwenden wir das CSS-Framework Bootstrap. Flask legt Dateien wie CSS und JavaScript im Verzeichnis / static ab. Entpacken Sie daher die von der offiziellen Website (http://getbootstrap.com/) heruntergeladene Bootstrap-ZIP-Datei und stellen Sie sie unter statischen Bedingungen bereit.

Bereiten Sie außerdem ein Verzeichnis mit dem Namen Vorlagen vor und fügen Sie HTML in dieses Verzeichnis ein.

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>

Grundsätzlich habe ich den Bootstrap Basic Template so geschrieben, wie er ist.

Der in {% ...%} enthaltene Teil ist Jinja2. Wenn in diesem Beispiel der Titel als Instanz vorhanden ist, wird er angezeigt und ein Block mit dem Namen content wird eingefügt.

Erstellen Sie einzelne Seiten

Diesmal ist es einfach, da es nur eine index.html-Seite gibt.

Das erste {% erweitert "layout.html"%} erweitert layout.html. Jetzt müssen Sie nur noch die Teile außer dem Layout schreiben. Wenn Sie es in {% block content%} {% endblock%} einschließen, wird es als Block mit dem Namen content behandelt. Dadurch wird es in den Inhaltsblockteil des Layouts gerendert.

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 %}
Hallo{{ name }}Herr.
          {% else %}
            {{ message }}
          {% endif %}
        </p>
        <form action="/post" method="post" class="form-inline">
          <label for="name">Name</label>
          <input type="text" class="form-control" id="name" name="name" placeholder="Name">
          <button type="submit" class="btn btn-default">Senden</button>
        </form>
      </div>
    </div>
  </div>
</div>
{% endblock %}

Wenn es eine Namensinstanz gibt, zeigen Sie den Namen an, andernfalls eine Nachricht.

Starte die Anwendung

Der Antrag ist jetzt vollständig. Wenn Sie danach etwas wie python app.py ausführen, wird die Webanwendung auf Port 5000 auf localhost gestartet.

1.png

Die obere Seite wurde sicher angezeigt. Die Nachricht wird zufällig ausgewählt und von NumPy angezeigt. Geben Sie hier Ihren Namen ein und klicken Sie auf die Schaltfläche "Senden", um ihn an / post zu senden.

2.png

Rufen Sie den Namen aus dem Anforderungsformular ab und rendern Sie index.html. Dies zeigt den Namen an, den Sie auf dem Bildschirm eingegeben haben.

Zusammenfassung

Sie können sehen, dass Sie mit Python problemlos eine Webanwendung erstellen können. Es kann gesagt werden, dass sich die Fähigkeit, nicht nur den Analyseteil, sondern auch andere Teile wie das Web in derselben Sprache zu beschreiben, von der R-Sprache unterscheidet.

Wenn Sie ein Computersystem mit einer einfachen Antwortfunktion vorbereiten möchten, ist es praktisch, das Python-Programm zu erweitern und es so wie es ist als Webanwendung zu implementieren.

Sie können die gesendeten Daten einfach in der Datenbank speichern und die Daten aus der Datenbank lesen, indem Sie SQLAlchemy kombinieren. Ich denke, das allein hat mir das Gefühl gegeben, dass eine praktische Anwendung geschaffen werden kann.

Der Quellcode für diesen Artikel ist unter [hier] verfügbar (https://github.com/ynakayama/flask-hello/tree/hello-world).

Recommended Posts

Versuchen Sie es mit dem Webanwendungsframework Flask
Versuchen Sie es mit dem Python-Webframework Tornado Part 1
Versuchen Sie es mit dem Python-Webframework Tornado Part 2
Erstellen einer Webanwendung mit Flask ②
Erstellen einer Webanwendung mit Flask ①
Erstellen einer Webanwendung mit Flask ③
Erstellen einer Webanwendung mit Flask ④
Versuchen Sie es mit dem Python-Webframework Django (2). Schauen Sie sich settings.py an
Webanwendung mit Flasche (1)
Versuchen Sie es mit Pythons Webframework Django (1) - Von der Installation bis zum Serverstart
So erstellen Sie eine Anwendung aus der Cloud mithilfe des Django-Webframeworks
WEB-Anwendungsentwicklung mit Django-Entwicklung Teil 1-
(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
Versuchen Sie es mit der Twitter-API
Entwicklung von Webanwendungen mit Flask
Versuchen Sie es mit der Twitter-API
Versuchen Sie es mit der PeeringDB 2.0-API
Webanwendung mit Python + Flask ② ③
Webanwendung mit Python + Flask ④
Entwicklung einer WEB-Anwendung mit Django [Django-Start]
Entwicklung einer WEB-Anwendung mit Django [Anwendungszusatz]
[Sakura-Mietserver] Versuchen Sie es mit einer Flasche.
Versuchen Sie es mit dem Python Cmd-Modul
Webanwendung mit Python + Flask (unter Verwendung von VScode) # 1 - Aufbau einer virtuellen Umgebung-
Versuchen Sie es mit der Wunderlist-API in Python
Entwicklung einer WEB-Anwendung mit Django [Modelldefinition]
Entwicklung der WEB-Anwendung mit Django [Grundeinstellung]
Versuchen Sie, die Kraken-API mit Python zu verwenden
Versuchen Sie es mit dem $ 6 Rabatt LiDAR (Camsense X1)
Versuchen Sie, das HL-Band der Reihe nach zu verwenden
WEB-Anwendungsentwicklung mit Django-Development Environment Construction-
Versuchen Sie, die Kamera mit Pythons OpenCV zu verwenden
Versuchen Sie die Clusteranalyse mit K-Mitteln
Entwicklung einer WEB-Anwendung mit Django [Request Processing]
Entwicklung einer WEB-Anwendung mit Django [Zusätzliche Vorlage]
Erstellen Sie eine Anwendung mit der Spotify-API
Ich habe versucht, das Webanwendungs-Framework zu vergleichen
Ich möchte eine Webanwendung mit React und Python Flask erstellen
Implementieren Sie eine einfache Anwendung mit Python Full Scratch ohne Verwendung eines Webframeworks.
Versuchen Sie, Code aus 1 mit dem Framework Chainer für maschinelles Lernen (Mnist Edition) zu schreiben.
Versuchen Sie es mit Tkinter
Versuchen Sie es mit Docker-Py
Ich verglich die Geschwindigkeit von Go Language Web Framework Echo und Python Web Framework Flask
Versuchen Sie, Blueprint with Flask zu verwenden, um Controller zu trennen
Versuchen Sie es mit einem Ausstecher
Versuchen Sie es mit PDFMiner
Python Web Framework Django gegen Pyramide gegen Flasche Dezember 2015
Rufen Sie die Web-API mit Anfragen auf. Beispiel: Flickr
Entwicklung einer WEB-Anwendung mit Django [Erstellung des Admin-Bildschirms]
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Python: Versuchen Sie, die Benutzeroberfläche von Pythonista 3 auf dem iPad zu verwenden
Der Tag, an dem ein Anfänger, der zweieinhalb Monate mit dem Programmieren begann, eine Webanwendung mit Flask erstellte
Versuchen Sie es mit Jieba, einer chinesischen morphologischen Analyse-Engine
Versuchen Sie es mit Geopandas
Versuchen Sie es mit Selen
Versuchen Sie es mit scipy
Einstellungen der Kolbenanwendung
Beantworten Sie das verkleinerte Bild mit Flask und PILImage
Versuchen Sie es vorerst mit LINE Notify
Versuchen Sie es mit pandas.DataFrame