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

このデータ (イベント) を引数として別のモジュールに送信したいと考えています。

より完全なコードは次のとおりです。

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:8888eventパラメーターを使用して投稿リクエストを行うと、エコーアウトされて表示されます

于 2012-11-08T21:17:35.067 に答える