Google App Engine:全球名称' X'没有定义

时间:2014-07-29 22:29:48

标签: python google-app-engine

我在我的代码中使用继承,该代码在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

我的代码似乎有什么问题?

2 个答案:

答案 0 :(得分:4)

你想做什么根本没有意义。帖子和获取是完全不同的请求。即使您可以像这样持久保存数据,也不会因为所有其他用户也可以访问该数据。

您需要将数据存储在请求之间 - 在数据库中或在会话中。

答案 1 :(得分:0)

应该是self.q1sea = ...而不是单q1sea = ...。否则,垃圾收集器将在post()返回时删除引用。

此外,在您的子课程中使用MainPage.post()之前,您需要致电MainPage.q1sea

这就是理论。实际上,正如@DanielRoseman所说,你不想这样做,而是使用数据库来存储你的数据并在以后加载它。