将表单信息发送到python模块

时间:2012-11-08 21:14:40

标签: python tornado

我正在使用龙卷风框架,我想将用户输入的信息发送到另一个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() 

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

1 个答案:

答案 0 :(得分:0)

通过模块,您是指本地访问的内容还是外部服务上的内容?

如果它是本地的,那么输入正确的模块和功能就很简单

from yourpackage.yourmodule import yourfunction
yourfunction(event)

如果您想通过http向外部服务发送数据,龙卷风会为此提供异步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的请求公开您的方法。因此,如果您访问localhost:8888,则会在您的浏览器main.html中呈现模板。

然后,如果您使用localhost:8888参数向event发送了一个帖子请求,那么它就会被回显给您看