1

当我控制不同类型的页面时,我将我的代码移动到另一个 python 文件中。但是这种方式有一个缺点:每次我想更改 url 处理程序时,我都必须重新main.py配置关于 url 处理程序的底线。例如 :

app = webapp2.WSGIApplication([('/', MainPage),
                               ('/thanks',ThanksHandler),
                               ('/unit2/signup',Signup),
                               ('/unit2/successful', LoginSuccess)], debug=True)

我尝试配置处理程序app.yaml以防止不利。

blog.py在同一目录中添加文件,在这个文件中,我有 Blog 类。这是我的blog.py文件:

class Blog(BaseHandler):
    def get(self):
        self.response.out.write("Hello")

app = webapp2.WSGIApplication([('/blog', Blog)], debug=True)

这是原始文件:

> handlers:
> - url: /favicon\.ico   static_files: favicon.ico   upload: favicon\.ico

- url: /.*   script: main.app

和这个新文件app.yaml

handlers:
- url: /favicon\.ico   static_files: favicon.ico   upload: favicon\.ico

- url: /blog/.*   script: blog.app

- url: /.*   script: main.app

但是当我转到: localhost:port/blog : 404: 找不到资源时。

请帮我。

谢谢 :)

4

1 回答 1

3

yaml 文件中的 /blog/.* url 规范与 blog.py 文件 (/blog) 中的 url 规范不匹配。特别是 /blog/.* 要求 url 在 blog 后有一个斜杠这一事实。例如,如果您在两个地方都只使用 /blog ,它将起作用。或者您可以在这两个地方使用 /blog/.*。

url 说明符按照它们在 yaml 文件中出现的顺序进行匹配,因此在这种特殊情况下,/blog/.* 不会在 /blog 上匹配,但会在最后一个(真正抓住所有)/.* 说明符上匹配,因此是 main .py 处理程序将被加载并且无法匹配(main.py 中调用 WSGIApplication 构造函数中没有模式)。

希望这可以帮助。-西尔维乌

于 2012-07-06T20:33:35.800 回答