【问题标题】:Methods on linking a HTML Tornado server and Python file链接 HTML Tornado 服务器和 Python 文件的方法
【发布时间】:2016-12-22 17:40:35
【问题描述】:

这是我的示例 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”函数来测试这个特性。但我的问题是我无法找到将它们链接在一起的方法。所以我的最终目标是单击 HTML 上的“提交”按钮,将两个值传递给 Tornado 服务器,将其用作我的 python 脚本中的输入,最后在 HTML 的文本区域或另一个页面上显示输出.我知道网络上有大量信息,但我对 Tornado 完全陌生(知识接近 0),其中大部分我都无法真正理解。非常感谢您对搜索方法或关键字的帮助,非常感谢。 (请尽可能保持基本的答案,这将有很大帮助,谢谢!)

【问题讨论】:

    标签: python html tornado


    【解决方案1】:

    首先你应该查看官方documentation。这很简单,它针对的是新手。

    同样在这个简短的guide 中,与您类似的代码部分将被简单地解释。

    现在是你的代码:

    在您的模板上,您需要通过添加 &lt;form method="post" id="sum_form"&gt; 来指定表单应在提交时发送发布请求

    您还需要确保您将提交添加到事件表单中的数据:$("#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}}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多