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.
Meine Ausführungsumgebung ist wie folgt, aber ich denke, dass es kein Problem gibt, wenn es eine Umgebung ist, in der Python funktioniert.
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.
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.
Die Änderungen gegenüber dem letzten Mal sind wie folgt.
{{datetime.now ()}} \ </ p> hinzugefügt
<!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>
Sie können die aktuelle Uhrzeit abrufen, indem Sie mit einem Browser darauf zugreifen.
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.
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.
$ tree --charset=x
.
|-- server.py
|-- static
| `-- style.css
`-- templates
|-- index.html
`-- result.html
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>
Sicherlich konnte die Anzahl der Zeichen gezählt werden. (Die Anzahl der Zeichen kann je nach Umgebung variieren.)
Erweitert die Zeichenanzahl. Wenn Sie Lust dazu haben, können Sie sogar eine Ähnlichkeitssuche nach TF / IDF schreiben.
Recommended Posts