簡體   English   中英

Google App Engine Python:類定義“無效語法”

[英]Google App Engine Python: Class Definition “Invalid Syntax”

當我在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

上面一行中的語法無效。 (第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/

行的結尾

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

應該替換為。

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

括號不平衡。 同樣,盡管從語法上看這不是錯誤的,但是您需要在整個文件中重新考慮縮進到4個空格。

編碼愉快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM