Python + Tornado에서 할머니를 구현해보십시오.
소개
원작자 : 자바로 유파를 구현해 보자 - Qiita
다양한 언어로 구현 : 【매일 자동 갱신】유파파 LGTM 랭킹! - Qiita
이 「영화의 Hello World!」도 프로그래밍 언어 단체라고 다진 느낌이 있으므로, 이번에는 웹 어플리케이션 프레임워크를 사용해 브라우저로 움직이는 데모를 만들어 봅니다.
이번에는 Python 3 + Tornado의 조합으로 만듭니다.
Tornado Web Server — Tornado 6.1 documentation
검증 환경
사전 준비
Tornado를 설치하십시오.
$ pip3 install tornado
코드
yubaba.pyimport random
import tornado.ioloop
import tornado.web
import tornado.template
class MainHandler(tornado.web.RequestHandler):
_template = tornado.template.Template("""<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Yubaba</title>
</head>
<body>
<p>契約書だよ。そこに名前を書きな。</p>
<form action="/" method="POST">
<input name="name" size="30" value="{{name}}">
<input type="submit" value="送信">
</form>
{% if name != "" %}
<p>
フン。{{name}}というのかい。贅沢な名だねぇ。<br>
今からお前の名前は{{newName}}だ。いいかい、{{newName}}だよ。分かったら返事をするんだ、{{newName}}!!
</p>
{% end %}
</body>
</html>
""")
def get(self):
self.set_header("Content-Type", "text/html")
self.write(self._template.generate(name=""))
def post(self):
name = self.get_body_argument("name")
newName = random.choice(name)
self.set_header("Content-Type", "text/html")
self.write(self._template.generate(name=name, newName=newName))
if __name__ == "__main__":
app = tornado.web.Application([
(r"/", MainHandler),
])
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
import random
import tornado.ioloop
import tornado.web
import tornado.template
class MainHandler(tornado.web.RequestHandler):
_template = tornado.template.Template("""<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Yubaba</title>
</head>
<body>
<p>契約書だよ。そこに名前を書きな。</p>
<form action="/" method="POST">
<input name="name" size="30" value="{{name}}">
<input type="submit" value="送信">
</form>
{% if name != "" %}
<p>
フン。{{name}}というのかい。贅沢な名だねぇ。<br>
今からお前の名前は{{newName}}だ。いいかい、{{newName}}だよ。分かったら返事をするんだ、{{newName}}!!
</p>
{% end %}
</body>
</html>
""")
def get(self):
self.set_header("Content-Type", "text/html")
self.write(self._template.generate(name=""))
def post(self):
name = self.get_body_argument("name")
newName = random.choice(name)
self.set_header("Content-Type", "text/html")
self.write(self._template.generate(name=name, newName=newName))
if __name__ == "__main__":
app = tornado.web.Application([
(r"/", MainHandler),
])
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
동작 예
$ python3 yubaba.py
터미널에는 아무것도 나오지 않지만, 이제 웹 서버가 시작되어 8888번 포트에서 기다리므로 브라우저에서 http://localhost:8888/
에 액세스합니다.
![](https://s1.md5.ltd/image/d45ccf6d5a673eafdb0a4f75f428ce01.png)
이름을 넣고 '제출'을 누르면
![](https://s1.md5.ltd/image/935721caef31b88654a6a20d3b7ce8b7.png)
이렇게 됩니다.
Python 3.3 이후라면 「𠮷田」씨에게도 문제없이 대응합니다.
관련 : [Python] 우리 유파가 "𠮷田"씨를 지원하는지 알고 싶다 - Qiita
![](https://s1.md5.ltd/image/5b764fa0a00ae7f8d2b7c4bae819da12.png)
약속
이름을 아무것도 쓰지 않고 제출하면 떨어집니다. 더 이상 전통예
![](https://s1.md5.ltd/image/7d3b080bcdc4e835d57d8c858d2a4373.png)
이 때의 터미널의 모습이 이쪽.
Reference
이 문제에 관하여(Python + Tornado에서 할머니를 구현해보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/everylittle/items/d83847dacc07e47c5689
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ python3 yubaba.py
Reference
이 문제에 관하여(Python + Tornado에서 할머니를 구현해보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/everylittle/items/d83847dacc07e47c5689텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)