繁体   English   中英

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

[英]The method POST is not allowed for this resource. Google App Engine Python

我正在尝试通过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)

URI路由

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

在你的情况下, '/.*'的模式MainHandler也匹配'/sign'之一的GuestBook ,也放在面前APP的列表,以便MainHandler被调用,而不是GuestBook ,你会期望。 而且MainHandler没有post()方法,因此会出现错误。

要解决此问题,只需在APP列表中交换模式的顺序即可:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM