Google AppEngine Python:未定义类

时间:2011-12-02 01:05:40

标签: python google-app-engine class

在我的Python编码的AppEngine应用程序中,我收到以下错误代码:

  

NameError:未定义全局名称“PandaHugs”

我无法弄清楚为什么,因为我将'PandaHugs'定义在它被称为的地方之上。这是代码:

#!C:\Python25\python.exe -u

import wsgiref.handlers
from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class PandasHugs(db.Model):
    message = db.StringProperty(required=False, multiline=False)

class MainPage(webapp.RequestHandler):
    def get(self):
        ListOfHugs = db.GqlQuery("SELECT * FROM PandasHugs")
        Adder = 0
        for PandasHugs in ListOfHugs:
            Adder = Adder + 1
        self.response.out.write('<html><body>')
        self.response.out.write('<h6>Panda has ' + str(Adder) + ' hugs!</h6>')
        self.response.out.write("<form action=\"/HugPanda\" method=\"post\"><div><input type=\"text\" name=\"PandaMessage\" value=\"A message for a panda.\"></div><div><input type=\"submit\" value=\"Hug a panda?\"></div></form></body></html>")


class HugAPanda(webapp.RequestHandler):
    def post(self):
        TheMessage = self.request.get('PandaMessage')
        HugForAPanda = PandaHugs(message=TheMessage)
        HugForAPanda.put()
        self.redirect('/main')

application = webapp.WSGIApplication(
  [('/', MainPage), ('/main', MainPage), ('/HugPanda', HugAPanda)],
  debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:3)

您可以在代码的早期定义类PandasHugs,但稍后您有:

HugForAPanda = PandaHugs(message=TheMessage)

注意单数形式的熊猫?你想要的是

HugForAPanda = PandasHugs(message=TheMessage)

修改:您for PandasHugs in ListOfHugs:课程的get()方法中也有MainPage。虽然使用类名作为方法的局部变量在技术上没有任何问题,但它会让人感到困惑并隐藏PandasHugs方法中的get()类。我可以建议像for hug in ListOfHugs吗?