Versuchen Sie es mit dem Python-Webframework Tornado Part 2

Einführung

Ich habe kürzlich mit Tornado gespielt, also zeige ich Ihnen, wie man es benutzt.

Dieses Mal werde ich eine Vorlage verwenden. Ich habe es nur versucht, aber ich habe nicht viel erklärt. Erwarten Sie das nächste Mal. Wenn Sie Fragen oder Wünsche haben, werden wir diese beantworten.

Ausführungsumgebung

Meine Ausführungsumgebung ist wie folgt, aber ich denke, dass es kein Problem gibt, wenn es eine Umgebung ist, in der Python funktioniert.

In Verbindung stehender Artikel

Was ist eine Template-Engine?

Die Vorlagen-Engine ist ein Mechanismus, der eine Vorlage (Vorlage) synthetisiert und Daten eingibt, um eine Zeichenfolge zu erstellen. Dieses Mal beschränke ich mich auf die Web Template Engine in Python. In diesem Fall ist die Vorlagen-Engine ein Mechanismus, der Python-Code teilweise in eine HTML-Vorlage einbettet und schließlich HTML generiert. Wenn Sie etwas Schwieriges wissen möchten, können Sie auf den folgenden Wikipedia-Artikel verweisen oder ihn bei Google überprüfen.

Tornado Template Engine

Sehen ist Glauben, also beginnen wir mit einem Beispiel, das die Vorlagen-Engine verwendet. Letztes Mal Ändern wir die verwendete index.html. Die Verzeichnisstruktur entspricht der von Last time. Es ist ein sehr langweiliges Beispiel, aber lassen Sie uns die aktuelle Zeit anzeigen.

Code

Die Änderungen gegenüber dem letzten Mal sind wie folgt.

<!DOCTYPE html>
<html>
  <head>
    <title>Hello, world</title>
    <link rel="stylesheet" href="{{ static_url("style.css") }}"/>
    {% from datetime import datetime %}
  </head>
  <body>
    <div id="container">
      <div id="main">
          <p>Hello, world</p>
          <p>{{datetime.now()}}</p>
      </div>
    </div>
  </body>
</html>

Ausführungsbeispiel

Sie können die aktuelle Uhrzeit abrufen, indem Sie mit einem Browser darauf zugreifen. helloworld.png

Kommentar

In Python wird der folgende bekannte Code einfach direkt in HTML geschrieben, indem er in {% und%} (oder {{und}}) eingeschlossen wird.

#Importieren Sie datetime aus dem datetime-Modul
from datetime import datetime
# datetime.Holen Sie sich die aktuelle Zeit mit der now-Methode
datetime.now()

Es ist spät, aber letztes Mal habe ich es oft benutzt.

{{ static_url("style.css") }}

War auch ein Feature der Template Engine.

Es wird durch das Ergebnis der Auswertung der in {% und%} (oder {{und}}) enthaltenen Zeichenfolge ersetzt. Es ist einfach. Die Template-Engine von Tornado enthält im Wesentlichen Python-Code in {% und%} (oder {{und}}) in einer HTML-Datei, und das Bewertungsergebnis ist in HTML eingebettet.

Sie können auch Kontrollstrukturen schreiben, z. B. for, while, if, try-cxcept.

Sie können auch Variablen in der Vorlage definieren.

Ich werde es später genauer zusammenfassen, aber wenn Sie mehr Details wissen möchten, lesen Sie bitte das Tornado-Handbuch tornado.template - Flexible Ausgabegenerierung. Bitte gib mir.

Zeigen Sie das Berechnungsergebnis des Serverprogramms an

Von hier aus werde ich erklären, wie das Berechnungsergebnis des Serverprogramms (server.py) empfangen wird. Ich werde die post () -Methode und die get () -Methode ab dem nächsten Mal erklären, also werde ich sie vorerst verwenden. Schreiben wir ein Programm, das die Anzahl der Zeichen zählt, die bei der Jobsuche berücksichtigt werden.

Verzeichnisaufbau

$ tree --charset=x
.
|-- server.py
|-- static
|   `-- style.css
`-- templates
    |-- index.html
    `-- result.html

Code

Das Ergebnis der von index.html ausgegebenen POST-Anforderung wird von der post () -Methode empfangen, und die Variable len_body wird an result.html übergeben und angezeigt. Es sieht nach einem langweiligen Beispiel aus, aber wenn Sie es bisher schaffen, sollten Sie in der Blütezeit von CGI Webanwendungen schreiben können, da Sie die Berechnungsergebnisse von Python übergeben können.

server.py


#!/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function
import os
import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("index.html")

    def post(self):
        body = self.get_argument('body')

        len_body = len(body)

        self.render("result.html",
                    len_body = len_body
                    )


application = tornado.web.Application([
    (r"/", MainHandler)
    ],
    template_path=os.path.join(os.getcwd(),  "templates"),
    static_path=os.path.join(os.getcwd(),  "static"),
)

if __name__ == "__main__":
    application.listen(8888)
    print("Server is up ...")
    tornado.ioloop.IOLoop.instance().start()

Löschen Sie den an das p-Tag angehängten Stil.

style.css


body {
  font-family:'Lucida Grande', 'Hiragino Kaku Gothic ProN', 'Hiragino Kakugo ProN W3', "MS P Gothic", sans-serif;
  width: 80%;
  margin: 0 auto;
}

Zeigen Sie den Bildschirm zur Eingabe der Zeichenfolge an, für die Sie die Anzahl der Zeichen in index.html berechnen möchten.

index.html


<!DOCTYPE html>
<html>
  <head>
    <title>Zeichenanzahl</title>
    <link rel="stylesheet" href="{{ static_url("style.css") }}"/>
  </head>
  <body>
    <div id="container">
      <div id="main">
        <form method="post" action="/">
          <textarea name="body" cols="40" rows="4"></textarea>
          <input type="submit">
        </form>
      </div>
    </div>
  </body>
</html>

Zeigen Sie das Berechnungsergebnis in result.html an.

result.html


<!DOCTYPE html>
<html>
  <head>
    <title>Zeichenanzahl</title>
    <link rel="stylesheet" href="{{ static_url("style.css") }}"/>
  </head>
  <body>
    <div id="container">
      <div id="main">
          <p>{{len_body}}</p>
      </div>
    </div>
  </body>
</html>

Ausführungsbeispiel

Sicherlich konnte die Anzahl der Zeichen gezählt werden. (Die Anzahl der Zeichen kann je nach Umgebung variieren.) helloworld.png helloworld.png

Nächster Zeitplan

Erweitert die Zeichenanzahl. Wenn Sie Lust dazu haben, können Sie sogar eine Ähnlichkeitssuche nach TF / IDF schreiben.

Recommended Posts

Versuchen Sie es mit dem Python-Webframework Tornado Part 2
Versuchen Sie es mit dem Python-Webframework Django (2). Schauen Sie sich settings.py an
Versuchen Sie es mit dem Webanwendungsframework Flask
Versuchen Sie es mit Pythons Webframework Django (1) - Von der Installation bis zum Serverstart
Versuchen Sie es mit dem Python Cmd-Modul
Versuchen Sie es mit der Wunderlist-API in Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
Ich habe das Python Tornado Testing Framework ausprobiert
Django Python Web Framework
Einführung in Tornado (1): Python Web Framework mit Tornado gestartet
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Python: Versuchen Sie, die Benutzeroberfläche von Pythonista 3 auf dem iPad zu verwenden
Versuchen Sie es mit dem Sammlungsmodul (ChainMap) von python3
Versuchen Sie es mit Tweepy [Python2.7]
Versuchen Sie, die DropBox Core-API mit Python zu verwenden
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 2
Schneiden Sie einen Teil der Zeichenfolge mit einem Python-Slice aus
(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 1 ~
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 1
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 2 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 3 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 4 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 5 ~
[Python] Versuchen Sie, Tkinters Leinwand zu verwenden
Versuchen Sie es mit Kubernetes Client -Python-
Versuchen Sie es mit SQLAlchemy + MySQL (Teil 1)
Versuchen Sie es mit SQLAlchemy + MySQL (Teil 2)
Web Scraping mit Selenium (Python)
Versuchen Sie es mit der PeeringDB 2.0-API
Python-Anfänger veröffentlichen Web-Apps mithilfe von maschinellem Lernen [Teil 1] Einführung
Probieren Sie die ähnliche Suche von Image Search mit Python SDK [Search] aus.
[Teil 2] Crawlen mit Python! Klicken Sie auf die Webseite, um sich zu bewegen!
[CleanArchitecture with Python] Teil 2: Frameworks & Drivers Layer: Die Entstehung des Web
Bedienen Sie den Browser mit den Python-Bindungen des Selenium Web Driver
Versuchen Sie es mit Pillow auf iPython (Teil 1)
Versuchen Sie es mit der Pleasant-API (Python / FastAPI).
Versuchen Sie es mit Pillow auf iPython (Teil 3).
Extrahieren Sie die Targz-Datei mit Python
Versuchen Sie es mit der Aktions-API von Python argparse
Installieren Sie das Python Framework Django mit pip
Versuchen Sie es mit LeapMotion mit Python
Versuchen Sie es mit Amazon DynamoDB von Python
Versuchen Sie, Online-Familien-Mahjong mit Python zu analysieren (TEIL 1: Daten aufnehmen)
Visualisieren Sie Ihre Taschengelddateien mit Dash, dem Python-Webframework
Versuchen Sie vorerst, FireBase Cloud Firestore mit Python zu verwenden
Einführung in das BOT-Framework Minette für Python
GUI-Erstellung in Python mit tkinter Teil 1
Versuchen Sie eine Formel mit Σ mit Python
Hinter dem Flyer: Docker mit Python verwenden
Versuchen Sie es mit dem $ 6 Rabatt LiDAR (Camsense X1)
Versuchen Sie, das HL-Band der Reihe nach zu verwenden
[Anfänger] Leicht verständliches Python-Web-Scraping mit Google Colaboratory
Versuchen Sie, die Kamera mit Pythons OpenCV zu verwenden
Dialogflow (früher: API.AI) Verwenden Sie das Python SDK #dialogflow
Web-WF Python Tornado Teil 3 (Einführung in Openpyexcel)
Tweet mit der Twitter-API in Python
Versuchen Sie es mit Junos 'On-Box Python # 2 Commit Script
Versuchen Sie die Clusteranalyse mit K-Mitteln
Entwicklung und Bereitstellung der REST-API in Python mit Falcon Web Framework
[Python] Probieren Sie pydash der Python-Version von lodash aus