Google App Engine Python: определение класса "Неверный синтаксис" - PullRequest
0 голосов
/ 01 декабря 2011

Когда я запускаю этот код в dev_appserver, он выдает ошибку «Неверный синтаксис» в строке 22, где инициализируется класс HugAPanda. Кто-нибудь знает, почему это произойдет? Вот код:

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.IntegerProperty()

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):
        HugForAPanda = PandaHugs()
        HugForAPanda.message = self.request.get('PandaMessage')
        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()

Еще раз спасибо! -Neil

Ответы [ 2 ]

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

У вас неверный синтаксис в строке выше. (Строка 15 выглядит так)

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>">

Дополнительные '>' в конце должны быть заменены на ')'.

Это очень веская причина для соблюдения соглашения Python и ограничения длины строки до 79 символов. Я не буду спорить с увеличением до 120, если это стандарт для вашей организации, но это, конечно, не должно быть написано так, как это представлено здесь:)

В этом случае я бы рекомендовал написать читаемый HTML-код (т. Е. С правильным отступом) в тройных кавычках. В вашем случае я бы использовал одинарные тройные кавычки, чтобы вам не приходилось избегать каждого ". Я просто рекомендую здесь одинарные кавычки, чтобы избежать путаницы, но я верю, что" "" также будет работать в этом случае.

т.

self.response.out.write('''<html>
  <body>
    <h6>Panda has %s hugs!</h6>
      <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>''' % Adder)

Только что заметил, что некоторые ошибки в html после переписывания вашего кода должны иметь '/>', чтобы закрыть ваши входные теги. Хороший стиль может помочь избежать ошибок без использования каких-либо инструментов!

http://www.python.org/dev/peps/pep-0008/

2 голосов
/ 01 декабря 2011

Конец вашей строки

self.response.out.write("<form....da?\"></div></form></body></html>">

следует заменить на.

self.response.out.write("<form....da?\"></div></form></body></html>")

Круглые скобки разбалансированы.Кроме того, хотя это не является синтаксически неправильным, но вам необходимо пересмотреть отступ в 4 пробела в одном файле.

Happy Coding.

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