所以我已经使用Google App Engine Webapp2多年了。现在不推荐使用Python 2,而Webapp2仅适用于Python2。我使用的所有类都旨在由webapp2解释。我没有尝试通过将页面的所有类更改为Flask来更改数万行代码,而是在进行一个简单的修复。我只需要在类说出self.response.write(“无论您写什么”)时编译所有内容并将其返回到flask即可使用。我遇到的问题是添加.write()我只能做self.response(“ whatever add”),但我不知道如何使self.response.write(“ whatever”)工作。任何有关如何添加.write()并使之工作的建议将不胜感激。这是到目前为止我所做的事情,这段代码很好用,但是我仍然需要添加.write()。
from flask import Flask
from flask import request
app = Flask(__name__)
class BaseHandler():
def __init__(self):
self.data = ""
def response(self,stuffAdd):
self.data+=stuffAdd
class MainPage(BaseHandler):
def get(self):
self.response("first thing to add")
self.response("second thing to add")
@app.route('/',methods=['GET'])
def hello_world():
if request.method == 'GET':
newMain=MainPage()
newMain.get()
return newMain.data
我认为这将满足您的要求:
class Response:
def __init__(self, handler):
self.handler = handler
def __call__(self, stuffAdd):
self.handler.data += stuffAdd
def write(self, arg):
# You can do whatever you want here
whatever_you_want(self.handler, arg)
class BaseHandler:
def __init__(self):
self.data = ""
self.response = Response(self)
[Response
是可调用的类,这意味着您可以像调用函数一样调用该类的实例,在这种情况下,将调用__call__
方法。
我只是将存根whatever_you_want(handler, arg)
用作write
,但是显然您可以在其中做任何您想做的事情。
感谢Tom,现在可以使用了。如果有人试图将旧的Webapp2类转换为Flask,则这是使其工作的最终代码。稍后,我还将添加一种方法来管理webapp2会话并发布请求。稍后,我将对此进行更新,以供其他所有人希望使其旧的webapp2项目与python 3一起使用。
from flask import Flask
from flask import request
app = Flask(__name__)
class Response:
def __init__(self, handler):
self.handler = handler
def __call__(self, stuffAdd):
self.handler.data += stuffAdd
def write(self, stuffAdd):
self.handler.data += stuffAdd
class BaseHandler:
def __init__(self):
self.data = ""
self.response = Response(self)
class MainPage(BaseHandler):
def get(self):
self.response.write("first thing to add")
self.response.write("second thing to add to the stuff")
@app.route('/',methods=['GET'])
def hello_world():
if request.method == 'GET':
newMain=MainPage()
newMain.get()
return newMain.data