当我在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()
再次感谢!
-尼尔
最佳答案
上面一行中的语法无效。 (第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/
关于python - Google App Engine Python : Class Definition “Invalid Syntax” ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8337349/