Python 添加额外的属性让 Flask 读取 webapp2
Python Add Extra Attribute to make Flask read webapp2
所以我多年来一直在使用 Google App Engine Webapp2。现在 Python 2 已弃用,Webapp2 仅适用于 Python 2。我使用的所有 classes 都旨在由 webapp2 解释。我没有尝试通过将页面的所有 classes 更改为 Flask 来更改数万行代码,而是在进行一个简单的修复。我只需要当 class 说 self.response.write("whatever your writing") 编译所有这些并且 return 它与烧瓶一起工作。我 运行 遇到的问题是添加 .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
是可调用的 class,这意味着您可以像函数一样调用 class 的实例,在这种情况下会调用 __call__
方法。
我只是为 write
使用了一个存根 whatever_you_want(self.handler, arg)
,但显然你可以在那里做任何你想做的事。
多亏了汤姆,它现在可以用了。如果有人试图将旧的 Webapp2 类 转换为 Flask,这里是使其与 python 一起工作的代码 3. 您的 webapp2 语法将使用 Flask 安全会话,进行重定向,执行 post 请求,并写在页面上。这将处理 webapp2 所做的大部分工作。现在,您必须手动将 webapp2 处理程序更改为底部的 Flask 处理程序,但我也将编写一个循环来迭代它,稍后我将 post 在这里。
from flask import Flask, session,request,redirect
app = Flask(__name__)
class Response:
def __init__(self, handler):
self.handler = handler
def write(self, stuffAdd):
self.handler.data += stuffAdd
class BaseHandler:
def __init__(self):
self.data = ""
self.ChangePage="None"
self.response = Response(self)
self.session = session
self.request= {}
def redirect(self,arg):
self.ChangePage=arg
class FirstPage(BaseHandler):
def get(self):
self.redirect("/SecondPage")
def post(self):
self.response.write("First Page Post")
class SecondPage(BaseHandler):
def get(self):
self.response.write("second page")
def post(self):
self.response.write("Second Page Post")
class MainPage(BaseHandler):
def get(self):
self.session["name"]="Some Name"
self.session["phone"]="8675309"
self.response.write("""
<html>
<head>
</head>
<body>
""")
self.response.write("first thing to add")
self.response.write("""
<form method="post" action="/">
<input type="text" name="name">
<input type="submit">
""")
self.response.write("""
</body>
</html>
""")
def post(self):
name=self.request.get('name')
self.response.write("""
<html>
<head>
</head>
<body>
""")
self.response.write("this is the new post page<br/><br/>I posted " + name)
SessionName=self.session.get("name")
SessionPhone=self.session.get("phone")
self.response.write("<br/><br/>my session name is " + SessionName)
self.response.write("<br/><br/>my session phone number is " + SessionPhone)
self.response.write("""
</body>
</html>
""")
app.secret_key = 'your-secret-key'
@app.route('/',methods=['GET','POST'])
def daMain():
if request.method == 'GET':
daPage=MainPage()
daPage.get()
if daPage.ChangePage=="None":
return daPage.data
else:
return redirect(daPage.ChangePage)
if request.method == 'POST':
darequests=request.form
daPage=MainPage()
daPage.request=darequests
daPage.post()
if daPage.ChangePage=="None":
return daPage.data
else:
return redirect(daPage.ChangePage)
@app.route('/FirstPage',methods=['GET','POST'])
def daFirst():
if request.method == 'GET':
darequests=request.form
daPage=FirstPage()
daPage.request=darequests
daPage.get()
if daPage.ChangePage=="None":
return daPage.data
else:
return redirect(daPage.ChangePage)
if request.method == 'POST':
darequests=request.form
daPage=FirstPage()
daPage.request=darequests
daPage.post()
if daPage.ChangePage=="None":
return daPage.data
else:
return redirect(daPage.ChangePage)
@app.route('/SecondPage',methods=['GET','POST'])
def daSecond():
if request.method == 'GET':
daPage=SecondPage()
daPage.get()
if daPage.ChangePage=="None":
return daPage.data
else:
return redirect(daPage.ChangePage)
if request.method == 'POST':
darequests=request.form
daPage=SecondPage()
daPage.request=darequests
daPage.post()
if daPage.ChangePage=="None":
return daPage.data
else:
return redirect(daPage.ChangePage)
所以我多年来一直在使用 Google App Engine Webapp2。现在 Python 2 已弃用,Webapp2 仅适用于 Python 2。我使用的所有 classes 都旨在由 webapp2 解释。我没有尝试通过将页面的所有 classes 更改为 Flask 来更改数万行代码,而是在进行一个简单的修复。我只需要当 class 说 self.response.write("whatever your writing") 编译所有这些并且 return 它与烧瓶一起工作。我 运行 遇到的问题是添加 .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
是可调用的 class,这意味着您可以像函数一样调用 class 的实例,在这种情况下会调用 __call__
方法。
我只是为 write
使用了一个存根 whatever_you_want(self.handler, arg)
,但显然你可以在那里做任何你想做的事。
多亏了汤姆,它现在可以用了。如果有人试图将旧的 Webapp2 类 转换为 Flask,这里是使其与 python 一起工作的代码 3. 您的 webapp2 语法将使用 Flask 安全会话,进行重定向,执行 post 请求,并写在页面上。这将处理 webapp2 所做的大部分工作。现在,您必须手动将 webapp2 处理程序更改为底部的 Flask 处理程序,但我也将编写一个循环来迭代它,稍后我将 post 在这里。
from flask import Flask, session,request,redirect
app = Flask(__name__)
class Response:
def __init__(self, handler):
self.handler = handler
def write(self, stuffAdd):
self.handler.data += stuffAdd
class BaseHandler:
def __init__(self):
self.data = ""
self.ChangePage="None"
self.response = Response(self)
self.session = session
self.request= {}
def redirect(self,arg):
self.ChangePage=arg
class FirstPage(BaseHandler):
def get(self):
self.redirect("/SecondPage")
def post(self):
self.response.write("First Page Post")
class SecondPage(BaseHandler):
def get(self):
self.response.write("second page")
def post(self):
self.response.write("Second Page Post")
class MainPage(BaseHandler):
def get(self):
self.session["name"]="Some Name"
self.session["phone"]="8675309"
self.response.write("""
<html>
<head>
</head>
<body>
""")
self.response.write("first thing to add")
self.response.write("""
<form method="post" action="/">
<input type="text" name="name">
<input type="submit">
""")
self.response.write("""
</body>
</html>
""")
def post(self):
name=self.request.get('name')
self.response.write("""
<html>
<head>
</head>
<body>
""")
self.response.write("this is the new post page<br/><br/>I posted " + name)
SessionName=self.session.get("name")
SessionPhone=self.session.get("phone")
self.response.write("<br/><br/>my session name is " + SessionName)
self.response.write("<br/><br/>my session phone number is " + SessionPhone)
self.response.write("""
</body>
</html>
""")
app.secret_key = 'your-secret-key'
@app.route('/',methods=['GET','POST'])
def daMain():
if request.method == 'GET':
daPage=MainPage()
daPage.get()
if daPage.ChangePage=="None":
return daPage.data
else:
return redirect(daPage.ChangePage)
if request.method == 'POST':
darequests=request.form
daPage=MainPage()
daPage.request=darequests
daPage.post()
if daPage.ChangePage=="None":
return daPage.data
else:
return redirect(daPage.ChangePage)
@app.route('/FirstPage',methods=['GET','POST'])
def daFirst():
if request.method == 'GET':
darequests=request.form
daPage=FirstPage()
daPage.request=darequests
daPage.get()
if daPage.ChangePage=="None":
return daPage.data
else:
return redirect(daPage.ChangePage)
if request.method == 'POST':
darequests=request.form
daPage=FirstPage()
daPage.request=darequests
daPage.post()
if daPage.ChangePage=="None":
return daPage.data
else:
return redirect(daPage.ChangePage)
@app.route('/SecondPage',methods=['GET','POST'])
def daSecond():
if request.method == 'GET':
daPage=SecondPage()
daPage.get()
if daPage.ChangePage=="None":
return daPage.data
else:
return redirect(daPage.ChangePage)
if request.method == 'POST':
darequests=request.form
daPage=SecondPage()
daPage.request=darequests
daPage.post()
if daPage.ChangePage=="None":
return daPage.data
else:
return redirect(daPage.ChangePage)