【问题标题】:URL /testform handler does not match any handlerURL /testform 处理程序不匹配任何处理程序
【发布时间】:2018-02-20 16:34:30
【问题描述】:

我正在尝试制作一个简单的表单,它接收来自用户的输入并通过使用 python2.7 和本地运行的 Google 应用引擎在网页上显示相同的输入来响应。使用 SublimeText。我收到错误 "HTTP ERROR 500" 并尝试如下所示解决它,但没有运气。

这是 app.yaml 文件:

runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /
script: test.app

这是测试文件:

import webapp2
form="""
<form action="/testform">
<input  name= "q">
<input type="submit">
</form>
"""

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.out.write(form)

class TestHandler(webapp2.RequestHandler):
    def get(self):
        q = self.resquest.get("q")
        self.response.out.write(q)


app = webapp2.WSGIApplication([('/', MainPage), ('/testform', TestHandler)], debug=True)

当我运行上面的文件时,我收到这条消息:

url“/testform”不匹配任何处理程序。

我已经尝试为 /testform URL 添加一个单独的处理程序:

handlers:
- url: /
  script: test.app
- url: /testform
  script: test.app

当我这样做时,我会收到以下消息:

localhost 当前无法处理此请求。 HTTP 错误 500

我还尝试将 app.yaml 文件中的 / 更改为 .* 和 /.* 以处理所有 URL,如下所示:

handlers:
- url: .*
  script: test.app

和:

handlers:
- url: /.*
  script: test.app

结果相同:

localhost 当前无法处理此请求。 HTTP 错误 500

【问题讨论】:

  • 您在app.yaml 中的url: / 模式会导致这种情况,url: .* 应该可以工作。还可以尝试在更改后重新启动开发服务器,它可能不会总是接受更改。在 app.yaml 和测试文件中也要注意缩进(除非它只是复制粘贴错误)。如果问题仍然存在,请在开发服务器日志中显示匹配的请求条目。
  • 代码中的错字:resquest vs request。但这是个好消息——你已经解决了does not match any handlers 的问题。
  • 我将 URL 更改为 url: .* 根据您的建议,运行服务器并将 jj 传递到输入框,当点击提交按钮时,这是服务器返回的内容:file " /Users/xxxx /Desktop/test/test.py",第 31 行,在 get q = self.resquest.get("q") AttributeError: 'TestHandler' object has no attribute 'resquest' INFO 2018-02-20 22:28:00,834 module.py:835] 默认值:“GET /testform?q=jj HTTP/1.1”500 -
  • 太棒了,我刚刚改了错字,一切都很顺利。谢谢。

标签: python-2.7 google-app-engine


【解决方案1】:

将 cmets 转换为不让问题悬而未决的答案。

app.yaml 文件的初始版本中,您只有一个具有url: / 模式的处理程序。 /testform 请求与此单个处理程序不匹配,这解释了初始错误消息:

url“/testform”不匹配任何处理程序。

从处理程序映射预期来看,所有后续尝试都正常(我会选择url: .*,因为它更短,但这只是个人喜好,他们中的任何一个都应该这样做),错误消息实际上变成了:

localhost 当前无法处理此请求。 HTTP 错误 500

但是这个错误有一个不同的根本原因 - resquestrequest 拼写错误(现在已正确映射)TestHandler.get() 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多