我在我的代码中使用继承,该代码在Google App Engine上的main.py文件上运行。在我的父类中,我做了一堆计算并将结果存储在一堆变量中。现在,我想在我的子类中使用这些变量,因此我继承了父类以访问这些父变量。
父类
class MainPage(Handler):
def get(self):
self.render("indexab.html")
def post(self):
vam_id = str(randint(1, 5000))
name = self.request.get("name")
clas = self.request.get("clas")
roll_no = int(self.request.get("roll_no"))
semester = int(self.request.get("semester"))
q1 = int(self.request.get("1"))
q2 = int(self.request.get("2"))
q3 = int(self.request.get("3"))
q4 = int(self.request.get("4"))
q5 = int(self.request.get("5"))
q6 = int(self.request.get("6"))
q7 = int(self.request.get("7"))
q8 = int(self.request.get("8"))
q9 = int(self.request.get("9"))
total = Survey.all().count()
q1sea2 = Survey.all().filter("clas = ","SE-A").filter("q1 = ", 12).count()
q1sea4 = Survey.all().filter("clas = ","SE-A").filter("q1 = ", 14).count()
q1sea6 = Survey.all().filter("clas = ","SE-A").filter("q1 = ", 16).count()
q1sea8 = Survey.all().filter("clas = ","SE-A").filter("q1 = ", 18).count()
q1sea0 = Survey.all().filter("clas = ","SE-A").filter("q1 = ", 10).count()
q1sea = float((q1sea2*2 + q1sea4*4 + q1sea6*6 + q1sea8*8 + q1sea0*10))/float(total)
#some more code
self.render("thanx.html")
儿童班
class AdminPage(MainPage):
def get(self):
self.render("admin1.html", q1sea = q1sea)
但是,我的日志中出现以下错误:
self.render("admin1.html", q1sea = q1sea)
NameError: global name 'q1sea' is not defined
我的代码似乎有什么问题?
答案 0 :(得分:4)
你想做什么根本没有意义。帖子和获取是完全不同的请求。即使您可以像这样持久保存数据,也不会因为所有其他用户也可以访问该数据。
您需要将数据存储在请求之间 - 在数据库中或在会话中。
答案 1 :(得分:0)
应该是self.q1sea = ...
而不是单q1sea = ...
。否则,垃圾收集器将在post()
返回时删除引用。
此外,在您的子课程中使用MainPage.post()
之前,您需要致电MainPage.q1sea
。
这就是理论。实际上,正如@DanielRoseman所说,你不想这样做,而是使用数据库来存储你的数据并在以后加载它。