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.
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.
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.
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.
Les changements par rapport à la dernière fois sont les suivants.
{{datetime.now ()}} \ </ p>
<!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>
Vous pouvez obtenir l'heure actuelle en y accédant avec un navigateur.
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.
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.
$ tree --charset=x
.
|-- server.py
|-- static
| `-- style.css
`-- templates
|-- index.html
`-- result.html
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>
Certes, le nombre de caractères peut être compté. (Le nombre de caractères peut varier en fonction de l'environnement.)
Augmente le nombre de caractères. Si vous en avez envie, vous pouvez même écrire une recherche de similitude par TF / IDF.