表格提交后即显示相同的页面

时间:2015-12-12 18:25:32

标签: html tornado

在下面的简单表单提交中,我输入一个名称,然后在提交表单后打印一条消息(" 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>

1 个答案:

答案 0 :(得分:2)

你有两个单独的POST和GET处理程序,但只有在GET中你实际上是渲染表单。接下来,将writerender一起使用并不是一个好主意 - 它会起作用,但文本将位于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