この記事では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
に渡しています。
- このとき、POST送信されたnameとageの値を受け取り、
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が渡す変数名は一致している必要があります。