2016-05-17 36 views
0

我正在尝试通过GAE运行简单的GuestBook页面。它在其旁边显示一个文本框和一个按钮。当按下按钮时,POST方法似乎有错误。代码对我来说看起来很好,我知道这只是一个我似乎无法找到它的小错误。此资源不允许POST方法。 Google App Engine Python

import webapp2 
class MainHandler(webapp2.RequestHandler): 
    def get(self): 
     self.response.write("""<h1>Hello, world.</h1> 
     <br> <form action="/sign" method=post> 
     <textarea name=content rows=2 cols=30></textarea> 
     <br><input type=submit value="Sign GuestBook"> 
     </form>""") 

class GuestBook(webapp2.RequestHandler): 
def post(self): 
    self.response.write('<h2>You wrote:</h2> %s' % self.request.get('content')) 

APP = webapp2.WSGIApplication([ 
    ('/.*', MainHandler), 
    ('/sign', GuestBook), 
], debug=True) 
+0

一般来说这是一个好主意,包括在你的问题的确切的错误(与追溯),这是一个非常有用的信息。 –

+0

确切的错误在标题中。下次我会把它也包含在问题中。 –

回答

0

URI routing

这是它的工作原理:路由列表在WSGI 申请注册。当应用程序收到一个请求时,它会尝试按顺序匹配每个请求,直到匹配一个,然后调用相应的处理程序 。

在你的情况为MainHandler'/.*'模式还匹配了'/sign'一个用于GuestBook并且也放置之前在APP的名单,所以MainHandler被调用,而不是GuestBook,你会期望。而MainHandler没有post()方法,因此错误。

要修复它只是交换在APP的列表模式的顺序:

APP = webapp2.WSGIApplication([ 
    ('/sign', GuestBook), 
    ('/.*', MainHandler), 
], debug=True) 
+0

谢谢!它现在正在工作 –