Categories: PythonTornado

【Tornado入門】フォーム送信

この記事ではPOSTメソッドによるフォーム送信の方法について説明します。

今回のディレクトリ構成

特にフォルダを切らず「tornadoWebApp」というフォルダに中に3つのファイルを格納しています。

C:\USERS\TESTUSR\ONEDRIVE\IT\PYTHON\TORNADOWEBAPP
    index.html
    result.html
    server.py

ファイルの中身については後述していきます。

server.py

server.pyの内容は以下のとおりです。

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("index.html")
    
    def post(self):
        val1 = self.get_argument('name')
        val2 = self.get_argument('age')
        self.render("result.html",name=val1,age=val2)

application = tornado.web.Application([
    (r"/", MainHandler),
    (r"/sousin", MainHandler),
])

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

解説

  • def get(self):メソッドはhttp://localhost:8888/にGETリクエストしたときにindex.htmlを表示します。
  • def post(self):メソッドはhttp://localhost:8888/sousinにPOSTリクエストしたときにresult.htmlを表示します。
    • このとき、POST送信されたnameとageの値を受け取り、result.htmlに渡しています。

index.html

index.htmlの中身は以下のとおりです。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>StartPage</title>
<script type="text/javascript"></script>
</head>
<body>
    <form method="post" action="/sousin">
        <input type="text" name="name" id="name">
        <input type="text" name="age" id="age">
        <input type="submit">
    </form>
</body>
</html>

解説

  • nameとageの値をPOST送信します。

result.html

result.htmlの中身は以下のとおりです。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ResultPage</title>
<script type="text/javascript"></script>
</head>
<body>
<p>{{name}}</p>
<p>{{age}}</p>
</body>
</html>

{{}}がプレースホルダです。Pythonから渡された値を表示することが出来ます。
ここの変数名とPythonが渡す変数名は一致している必要があります。

issiki_wp