1

我正在使用龙卷风框架,我想将用户输入到表单中的信息发送到另一个 python 模块。目前在我的python模块中,我有一个龙卷风类,它获取表单输入数据,如下所示:

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render('main.html')

    def post(self):
        event = self.get_argument('event')
        print event

我现在想将此数据(事件)作为 arg 发送到另一个模块。

更完整的代码是:

import tornado.httpserver
import tornado.websocket
import tornado.ioloop
import tornado.web
import tornado.options
from pymongo import Connection
from bson import json_util
import json
import os.path

class MainHandler(tornado.web.RequestHandler):

    def get(self):
        self.render('main.html')

    def post(self):
        event = self.get_argument('event')
        return event



if __name__ == "__main__":
    print 'Server is alive.....'
    app = tornado.web.Application(
    handlers=[(r'/', MainHandler)],                           
    #(r'/ws', WSHandler)],
    template_path=os.path.join(os.path.dirname(__file__), "templates"),
    debug=True)

    tornado.options.parse_command_line()
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(8888)
    tornado.ioloop.IOLoop.instance().start() 

所以我在一个类函数中有一个变量(事件),我想在另一个模块中使用它。这就是我感到困惑的地方。

4

1 回答 1

0

模块是指您可以在本地访问的东西还是外部服务上的东西?

如果它是本地的,那么就像导入正确的模块和函数一样简单

from yourpackage.yourmodule import yourfunction
yourfunction(event)

如果您想通过 http 将数据发送到外部服务,tornado 为此提供了一个异步 http 客户端。http://www.tornadoweb.org/documentation/httpclient.html

我误解了您的问题MainHandler是要作为服务器运行,使用:

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

然后,这将通过对 localhost:8888 的请求公开您的方法。因此,如果您在浏览器main.html模板中访问 localhost:8888,则会呈现。

localhost:8888然后,如果您使用参数发出 post 请求,event它将被回显给您查看

于 2012-11-08T21:17:35.067 回答