此资源不允许使用POST方法。 Google App Engine Python

时间:2016-05-17 15:01:10

标签: python python-2.7 google-app-engine

我正在尝试通过GAE运行一个简单的GuestBook页面。它显示一个文本字段和旁边的按钮。按下按钮时,POST方法似乎有错误。代码看起来很好,我知道这只是一个小错误,我似乎无法找到它。

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)

1 个答案:

答案 0 :(得分:0)

来自URI routing

  

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

在您的情况下,'/.*'的{​​{1}}模式也与MainHandler的{​​{1}}模式匹配,并且在{<1}}之前也是之前的 '/sign'的列表,因此调用了GuestBook而不是您期望的APP。并且MainHandler没有GuestBook方法,因此错误。

要修复它,只需交换MainHandler列表中模式的顺序:

post()