在Class中运行Flask应用程序,具有处理POST请求的能力

时间:2017-12-20 15:23:27

标签: python flask

我正在尝试使用新线程从项目启动flask-app。因此,我希望能够从路由的函数中访问此类对象的所有属性。

我的最小例子如下:

from flask import Flask
from threading import Thread

    class WebApp():
        def __init__(self, ip, port): 
            self.ip = ip
            self.port = port
            self.app = Flask(__name__)
            self.some_attribute = 'test'

        def some_function(self): 
            print('hello there')


        def run(self):            
            @self.app.route('/test/', Methods=['POST'])
            def test(self):
                #do something with the data recieved in the post request
                print request.json()

                #run some method
                self.some_function()

                return self.some_attribute

            t = Thread(target=self.app.run, args=(self.ip,self.port,False))
            t.start()

if __name__ == '__main__':
    webapp = WebApp('localhost', 8000)
    webapp.run()

这个例子的问题是,在函数测试中不知道“self”。

我已经考虑过使用Flasks flask.views.MethodView或flask.view.View,但似乎我必须为每个路由定义一个全新的类。

我有可能这样做吗?

更新:通过从test()签名中删除“self”,可以访问“self”。但是,从POST请求访问数据仍然是一个问题。

1 个答案:

答案 0 :(得分:0)

嘿,我知道有点晚了,但是,在查看您的导入时,您忘记了导入请求:

from flask import request