链接 HTML Tornado 服务器和 Python 文件的方法

Methods on linking a HTML Tornado server and Python file

这是我的示例 HTML 文件

    <html>
    <head>
    <title>
    </title>
    </head>
    <body>
    <form action="">
    Value a:<br>
    <input type="text" name="Va">
    <br>
    Value b:<br>
    <input type="text" name="Vb">
    <br><br>
    <input type="submit">
    </form>
    <textarea rows="4" cols="10">

    </textarea>
    <p>
    </p>
    </body>
    </html>

以及一个给定的模板Tornado服务器代码:(我还需要帮助解释以下代码的每一部分)

    import tornado.ioloop
    import tornado.web
    import tornado.httpserver
    import tornado.gen
    import tornado.options
    tornado.options.parse_command_line()  
    class APIHandler(tornado.web.RequestHandler):
        @tornado.web.asynchronous
        def get(self):
            self.render('template.html')
        @tornado.gen.engine
        def post(self):
            try:
                num = int(self.get_argument('num'))
            except:
                num = 5
            self.render('template.html')
    app = tornado.web.Application([(r"/next_rec",APIHandler),])        
    if __name__ == "__main__":
        server = tornado.httpserver.HTTPServer(app)
        server.bind(48763)
        server.start(5)
        tornado.ioloop.IOLoop.current().start()

最后是我的 python 代码:

    if __name__ == '__main__':
        a = int(raw_input())
        b = int(raw_input())
    print a+b

我正在使用一个简单的 'a+b' 函数来测试此功能。但我的问题是我想不出将它们 link 放在一起的方法。所以我的最终目标是单击 HTML 上的 "Submit" 按钮,将两个值传递给 Tornado 服务器,将其用作我的 python 脚本中的输入,最后在中显示输出HTML 的文本区域或另一页。我知道网络上有大量信息,但我对 Tornado 完全陌生(知识接近 0),其中大部分我都无法真正理解。非常感谢您提供有关搜索方法或关键字的帮助,非常感谢。 (请尽量保持基本的回答,这会有很大帮助,谢谢!)

首先你应该查看官方documentation。它非常简单,并且针对新手。

同样在这个简短的 guide 中,对与您的代码类似的部分进行了简单的解释。

现在输入代码:

在您的模板上,您需要通过添加 <form method="post" id="sum_form">

指定表单在提交时发送 post 请求

您还需要确保您将提交在活动表单中添加的数据:$("#sum_form").submit();

在您的 post 方法中,您需要从客户的表单中读取传递的数字,添加它们,然后将它们作为参数发送回模板。

例如:

def post(self):
  numA = int(self.get_argument('Va'))
  numB = int(self.get_argument('VB'))
  sumAB = numA + numB
  self.render('template.html',sumAB=sumAB)

在您 template.html 中,您需要添加一个字段,您将在其中将传递的总和显示为 jinja 变量:{{sumAB}}