【问题标题】:The url "/web" does not match any handlersurl "/web" 不匹配任何处理程序
【发布时间】:2013-10-13 17:42:15
【问题描述】:

我一直在尝试在 appengine 上做一个简单的 webapp,但我遇到了处理程序的问题。 这是我的代码:

我的 app.yaml 文件:

application: test-app
version: 1
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /web/.*
  script: AppWebInterface.application

我的 AppWebInterface.py 文件:

import webapp2

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('Hello, World!')

application = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)

当我运行 dev_server 并访问 localhost:8080/web 时,我收到此错误:

The url "/web" does not match any handlers.

【问题讨论】:

    标签: python google-app-engine app.yaml


    【解决方案1】:

    我看到了两个问题,一个掩盖了另一个。

    首先,/web/.* 将匹配 /web//web/foo,但不匹配 /web。有几种方法。一是使用

    - url: /web.*
    

    但这也将匹配/webelos。许多这对你来说不是问题,因为下一步会抓住它。

    下一个问题是,将/web/foo 传递给应用程序后,没有任何东西可以将该url 模式映射到一个类。 WSGIAppliction 被设置为处理 /,尽管没有这样的 URL 会到达给定 app.yaml 中的处理程序的应用程序。

    如果您无法开始,请尝试将app.yaml 中的处理程序更改为- url: /。让一些简单的工作,然后从那里添加处理程序。

    【讨论】:

    • 谢谢。我只是将处理程序更改为:-url:/web.* 并在我的 AppWebInterface.py 中写了这个:application =webapp2.WSGIApplication([('/main', MainPage)], debug=True)。但是现在每当我尝试访问 localhost/web/main 时我仍然遇到问题,说:runtime/wsgi.py",第 269 行,在 _LoadHandler raise ImportError('%s has no attribute %s'% (handler , name)) ImportError: has no attribute app. 所以我将“application = webapp2 ...”更改为“app = webapp2。 .." 但我仍然有这个问题。
    • 您对 WSGIApplication 所做的更改必须与 app.yaml 中的处理程序一起使用。您的更改将/web 路由到应用程序,但应用程序处理/main,它没有被路由。改变一个或另一个。
    【解决方案2】:

    这是因为你的模式只匹配包含/web/的url(需要在/weg之后有一个'/')

    修改模式并查看结果。

    handlers:
    - url: /web.*
      script: AppWebInterface.application
    

    【讨论】:

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