链接 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}}
这是我的示例 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">
您还需要确保您将提交在活动表单中添加的数据:$("#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}}