在下面的简单表单提交中,我输入一个名称,然后在提交表单后打印一条消息(" BY,我的意思是表单已经消失,只显示消息")想要与表单一起显示相同的消息
enter code here
import tornado.ioloop
import tornado.web
class Main(tornado.web.RequestHandler):
def get(self):
self.render("auth.html")
def post(self):
ab=self.get_body_argument("username","")
self.write(ab+" printing in a new page")
application = tornado.web.Application([
(r"/", Main),
],debug=True,)
if __name__ == "__main__":
application.listen(8054)
tornado.ioloop.IOLoop.instance().start()
以下是方便的HTML页面:
<html>
<head>
Welcome
</head>
<body>
<div id="complete">
<div id="form">
<form action="/" method="post">
<input type= "text" name="username" >
<input type="submit" value="Login">
</form>
</div>
</div>
</body>
</html>
答案 0 :(得分:2)
你有两个单独的POST和GET处理程序,但只有在GET中你实际上是渲染表单。接下来,将write
与render
一起使用并不是一个好主意 - 它会起作用,但文本将位于HTML之前(之前或之后),解决方案 - 模板变量。
import tornado.ioloop
import tornado.web
class Main(tornado.web.RequestHandler):
def get(self):
self.render("auth.html", message=None)
def post(self):
msg = "{} printing in a new page".format(
self.get_body_argument("username","")
)
self.render("auth.html", message=msg)
application = tornado.web.Application([
(r"/", Main),
],debug=True,)
if __name__ == "__main__":
application.listen(8054)
tornado.ioloop.IOLoop.instance().start()
和auth.py
<html>
<head>
Welcome
</head>
<body>
<div id="complete">
<div id="form">
{% if message is not None %}
<p>{{ message }}</p>
{% end %}
<form action="/" method="post">
<input type= "text" name="username" >
<input type="submit" value="Login">
</form>
</div>
</div>
</body>
</html>
有关龙卷风模板的更多信息:http://tornadokevinlee.readthedocs.org/en/latest/template.html。