在我的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()
有人知道为什么会这样吗?
答案 0 :(得分:3)
您可以在代码的早期定义类PandasHugs
,但稍后您有:
HugForAPanda = PandaHugs(message=TheMessage)
注意单数形式的熊猫?你想要的是
HugForAPanda = PandasHugs(message=TheMessage)
修改:您for PandasHugs in ListOfHugs:
课程的get()
方法中也有MainPage
。虽然使用类名作为方法的局部变量在技术上没有任何问题,但它会让人感到困惑并隐藏PandasHugs
方法中的get()
类。我可以建议像for hug in ListOfHugs
吗?