需要从 lib.py 中的 main.py 访问 self.request.GET
Need to access self.request.GET from main.py in lib.py
我需要在 lib.py 内进行计算,我需要在 main.py 内访问用户输入数据,因为它需要那样做。我该怎么做?
在 lib.py 中执行 from main import MainHandler 然后调用它 "works" 因为它不会给出任何代码错误,但这样做会显示一个空白页面,我得到一个日志错误,说我无法导入它。
main.py
import webapp2
from lib import FormData
from pages import FormPage
from pages import ResultsPage
class MainHandler(webapp2.RequestHandler):
def get(self):
f = FormPage()
s = ResultsPage()
fd1 = FormData()
if self.request.GET:
fd1.name = self.request.GET['name']
fd1.email = self.request.GET['email']
fd1.weight = self.request.GET['weight']
fd1.height = self.request.GET['height']
self.response.write(s.second_page(fd1.name, fd1.email, fd1.weight, fd1.height))
else:
self.response.write(f.form_page)
app = webapp2.WSGIApplication([
('/', MainHandler)
], debug=True)
lib.py
class FormData(object):
def __init__(self):
pass
我需要能够访问:
fd1.name = self.request.GET['name']
fd1.email = self.request.GET['email']
fd1.weight = self.request.GET['weight']
fd1.height = self.request.GET['height']
在lib.py
您的 if/else 语句在 get
方法之外,因此它甚至不能正常工作。
我认为最简洁的方法是将请求数据传递给初始化程序中已有的 FormData
class。所以代码看起来像这样:
main.py
import webapp2
from lib import FormData
from pages import FormPage
from pages import ResultsPage
class MainHandler(webapp2.RequestHandler):
def get(self):
f = FormPage()
s = ResultsPage()
fd1 = FormData(data=self.request.GET)
if fd1.name: # This is None, if form has not been submitted
self.response.write(s.second_page(fd1.name, fd1.email, fd1.weight, fd1.height))
else:
self.response.write(f.form_page)
app = webapp2.WSGIApplication([
('/', MainHandler)
], debug=True)
lib.py
class FormData(object):
def __init__(self, data):
self.name = data.get('name')
self.email = data.get('email')
self.weight = data.get('weight')
self.height = data.get('height')
附带说明一下,我不太了解这个 webapp2 框架,所以可能有更好的方法来做到这一点。
我需要在 lib.py 内进行计算,我需要在 main.py 内访问用户输入数据,因为它需要那样做。我该怎么做?
在 lib.py 中执行 from main import MainHandler 然后调用它 "works" 因为它不会给出任何代码错误,但这样做会显示一个空白页面,我得到一个日志错误,说我无法导入它。
main.py
import webapp2
from lib import FormData
from pages import FormPage
from pages import ResultsPage
class MainHandler(webapp2.RequestHandler):
def get(self):
f = FormPage()
s = ResultsPage()
fd1 = FormData()
if self.request.GET:
fd1.name = self.request.GET['name']
fd1.email = self.request.GET['email']
fd1.weight = self.request.GET['weight']
fd1.height = self.request.GET['height']
self.response.write(s.second_page(fd1.name, fd1.email, fd1.weight, fd1.height))
else:
self.response.write(f.form_page)
app = webapp2.WSGIApplication([
('/', MainHandler)
], debug=True)
lib.py
class FormData(object):
def __init__(self):
pass
我需要能够访问:
fd1.name = self.request.GET['name']
fd1.email = self.request.GET['email']
fd1.weight = self.request.GET['weight']
fd1.height = self.request.GET['height']
在lib.py
您的 if/else 语句在 get
方法之外,因此它甚至不能正常工作。
我认为最简洁的方法是将请求数据传递给初始化程序中已有的 FormData
class。所以代码看起来像这样:
main.py
import webapp2
from lib import FormData
from pages import FormPage
from pages import ResultsPage
class MainHandler(webapp2.RequestHandler):
def get(self):
f = FormPage()
s = ResultsPage()
fd1 = FormData(data=self.request.GET)
if fd1.name: # This is None, if form has not been submitted
self.response.write(s.second_page(fd1.name, fd1.email, fd1.weight, fd1.height))
else:
self.response.write(f.form_page)
app = webapp2.WSGIApplication([
('/', MainHandler)
], debug=True)
lib.py
class FormData(object):
def __init__(self, data):
self.name = data.get('name')
self.email = data.get('email')
self.weight = data.get('weight')
self.height = data.get('height')
附带说明一下,我不太了解这个 webapp2 框架,所以可能有更好的方法来做到这一点。