Essayez d'utiliser le framework Web Python Tornado Partie 2

introduction

J'ai joué avec Tornado récemment, donc je vais vous montrer comment l'utiliser.

Cette fois, j'utiliserai un modèle. J'ai juste essayé de l'utiliser, mais je n'ai pas beaucoup expliqué. Attendez-vous à la prochaine fois. Si vous avez des questions ou des demandes, nous y répondrons.

Environnement d'exécution

Mon environnement d'exécution est le suivant, mais je pense qu'il n'y a pas de problème s'il s'agit d'un environnement dans lequel Python fonctionne.

Article associé

Qu'est-ce qu'un moteur de modèle?

Le moteur de modèle est un mécanisme qui synthétise un modèle (modèle) et des données d'entrée pour créer une chaîne de caractères. Cette fois, je me limiterai au moteur de modèle Web en Python. Dans ce cas, le moteur de modèle est un mécanisme qui intègre partiellement du code Python dans un modèle HTML et génère finalement du HTML. Si vous voulez connaître une petite chose difficile, vous pouvez vous référer à l'article suivant de Wikipédia ou le consulter sur Google.

Moteur de modèle Tornado

Voir c'est croire, commençons par un exemple utilisant le moteur de template. Dernière fois Modifions l'index.html utilisé. La structure des répertoires est la même que celle de Dernière fois. C'est un exemple très ennuyeux, mais affichons l'heure actuelle.

code

Les changements par rapport à la dernière fois sont les suivants.

<!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>

Exemple d'exécution

Vous pouvez obtenir l'heure actuelle en y accédant avec un navigateur. helloworld.png

Commentaire

En Python, le code suivant, qui est familier, est simplement écrit directement en HTML en le mettant entre {% et%} (ou {{et}}).

#Importer datetime à partir du module datetime
from datetime import datetime
# datetime.Obtenez l'heure actuelle avec la méthode now
datetime.now()

Il est tard, mais la dernière fois je l'ai beaucoup utilisé.

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

Était également une fonctionnalité du moteur de modèle.

Il sera remplacé par le résultat de l'évaluation de la chaîne de caractères entre {% et%} (ou {{et}}). C'est facile. Le moteur de modèle de Tornado englobe essentiellement le code Python entre {% et%} (ou {{et}}) dans un fichier HTML, et le résultat de l'évaluation est intégré au HTML.

Vous pouvez également écrire des structures de contrôle telles que for, while, if, try-cxcept.

Vous pouvez également définir des variables dans le modèle.

Je vais le résumer plus correctement plus tard, mais si vous voulez en savoir plus, veuillez consulter le manuel Tornado tornado.template - Génération de sortie flexible. S'il te plait donne moi.

Afficher le résultat du calcul du programme serveur

De là, j'expliquerai comment recevoir le résultat du calcul du programme serveur (server.py). J'expliquerai la méthode post () et la méthode get () à partir de la prochaine fois, donc je vais l'utiliser pour le moment. Écrivons un programme qui compte le nombre de caractères qui seront pris en charge lors de la recherche d'emploi.

Structure du répertoire

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

code

Le résultat de la requête POST émise par index.html est reçu par la méthode post (), et la variable len_body est passée à result.html et affichée. Cela ressemble à un exemple ennuyeux, mais si vous pouvez le faire jusqu'à présent, vous devriez pouvoir écrire des applications Web à l'apogée de CGI car vous pouvez transmettre les résultats des calculs par Python.

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()

Supprimez le style attaché à la balise p.

style.css


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

Affichez l'écran de saisie de la chaîne de caractères pour laquelle vous souhaitez calculer le nombre de caractères dans index.html.

index.html


<!DOCTYPE html>
<html>
  <head>
    <title>Nombre de caractères</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>

Affichez le résultat du calcul dans result.html.

result.html


<!DOCTYPE html>
<html>
  <head>
    <title>Nombre de caractères</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>

Exemple d'exécution

Certes, le nombre de caractères peut être compté. (Le nombre de caractères peut varier en fonction de l'environnement.) helloworld.png helloworld.png

Calendrier suivant

Augmente le nombre de caractères. Si vous en avez envie, vous pouvez même écrire une recherche de similitude par TF / IDF.

Recommended Posts

Essayez d'utiliser le framework Web Python Tornado Partie 2
Essayez d'utiliser le framework Web Python Django (2) - Regardez setting.py
Essayez d'utiliser le framework d'application Web Flask
Essayez d'utiliser le framework web de Python Django (1) - De l'installation au démarrage du serveur
Essayez d'utiliser le module Python Cmd
Essayez d'utiliser l'API Wunderlist en Python
Essayez d'utiliser l'API Kraken avec Python
J'ai essayé le framework de test Python Tornado
Framework Web Django Python
Introduction à Tornado (1): Framework Web Python démarré avec Tornado
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Python: essayez d'utiliser l'interface utilisateur sur Pythonista 3 sur iPad
Essayez d'utiliser le module de collections (ChainMap) de python3
Essayez d'utiliser Tweepy [Python2.7]
Essayez d'utiliser l'API DropBox Core avec Python
Explication du concept d'analyse de régression à l'aide de python Partie 2
Découpez une partie de la chaîne à l'aide d'une tranche Python
(Python) Essayez de développer une application Web en utilisant Django
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 1 ~
Explication du concept d'analyse de régression à l'aide de Python Partie 1
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 2 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 3 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 4 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 5 ~
[Python] Essayez d'utiliser le canevas de Tkinter
Essayez d'utiliser Kubernetes Client -Python-
Essayez d'utiliser SQLAlchemy + MySQL (partie 1)
Essayez d'utiliser SQLAlchemy + MySQL (partie 2)
Web scraping avec Selenium (Python)
Essayez d'utiliser l'API PeeringDB 2.0
Les débutants en Python publient des applications Web à l'aide de l'apprentissage automatique [Partie 1] Introduction
Essayez une recherche similaire de recherche d'images à l'aide du SDK Python [Recherche]
[Part.2] Exploration avec Python! Cliquez sur la page Web pour vous déplacer!
[CleanArchitecture with Python] Partie 2: Couche Frameworks & Drivers: Présentation du Web
Utilisez le navigateur à l'aide des liaisons Python du pilote Web Selenium
Essayez d'utiliser Pillow sur iPython (partie 1)
Essayez d'utiliser l'API de Pleasant (python / FastAPI)
Essayez d'utiliser Pillow sur iPython (partie 3)
Extraire le fichier targz en utilisant python
Essayez d'utiliser l'API d'action de Python argparse
Installer le framework Python django à l'aide de pip
Essayez d'utiliser LeapMotion avec Python
Essayez d'utiliser Amazon DynamoDB à partir de Python
Essayez d'analyser le mahjong familial en ligne à l'aide de Python (PARTIE 1: Prendre des données)
Visualisez vos fichiers d'argent de poche avec Dash, le framework Web Python
Essayez d'utiliser FireBase Cloud Firestore avec Python pour le moment
Présentation du framework BOT Minette pour Python
Création d'interface graphique en python à l'aide de tkinter partie 1
Essayez une formule utilisant Σ avec python
Derrière le flyer: utiliser Docker avec Python
Essayez d'utiliser le LiDAR de 6 $ de réduction (Camsense X1)
Essayez d'utiliser la bande HL dans l'ordre
[Débutant] Scrapage Web Python facile à comprendre à l'aide de Google Colaboratory
Essayez d'utiliser l'appareil photo avec OpenCV de Python
Dialogflow (anciennement: API.AI) Essayez d'utiliser le SDK Python #dialogflow
Web-WF Python Tornado Partie 3 (Introduction à Openpyexcel)
Tweet à l'aide de l'API Twitter en Python
Essayez d'utiliser le script de validation Python # 2 On-box de Junos
Essayez l'analyse de cluster par K-means
Développement et déploiement de l'API REST en Python à l'aide de Falcon Web Framework
[Python] Essayez pydash de la version Python de lodash