【发布时间】: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 和测试文件中也要注意缩进(除非它只是复制粘贴错误)。如果问题仍然存在,请在开发服务器日志中显示匹配的请求条目。 -
代码中的错字:
resquestvsrequest。但这是个好消息——你已经解决了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