Google AppEngine Python: класс не определен - PullRequest
1 голос
/ 02 декабря 2011

В моем приложении AppEngine с Python-кодом я получаю следующий код ошибки:

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 Ответ

3 голосов
/ 02 декабря 2011

Вы определили класс PandasHugs в начале своего кода, но позже у вас есть:

HugForAPanda = PandaHugs(message=TheMessage)

Заметили единственную форму Panda?То, что вы хотите -

HugForAPanda = PandasHugs(message=TheMessage)

Редактировать: У вас также есть for PandasHugs in ListOfHugs: в методе get() вашего MainPage класса.Хотя технически нет ничего плохого в использовании имени класса в качестве локальной переменной вашего метода, это сбивает с толку и скрывает класс PandasHugs в методе get().Могу ли я предложить что-то вроде for hug in ListOfHugs?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...