1

我正在设置一个新的 GAE 项目,但我无法让子目录中的脚本正常工作。

编辑:如果我去localhost:8080/testing_desc.html我没有任何错误,只是一个空白页面(查看源也是空白的)。我的根目录中的脚本正常工作。__init__.py根目录和子目录中都有一个。

Python 脚本示例(“/testing/testing_desc.py”):

import webapp2 as webapp

class DescTstPage(webapp.RequestHandler):
    def get(self):
        html = 'This should work.'
        self.response.out.write(html)

app = webapp.WSGIApplication([('/.*', DescTstPage)], debug=True)

应用程序.yaml:

application: blah
version: blah
runtime: python27
api_version: 1

default_expiration: "5d 12h"

threadsafe: false

libraries:
- name: webapp2
  version: latest


handlers:
- url: /                  <-- This one works
  script: main.app
- url: /index.html        <-- This does NOT work (??)
  script: main.app
- url: /(.*?)_desc.html   <-- Also does NOT work
  script: \1/\1_desc.app
#file not found
- url: /.*
  script: file_not_found.app

我还尝试了一个更简单的 yaml 版本:

-url: /testing_desc.html
 script: /testing/testing_desc.app
4

4 回答 4

2

当您使用 WSGI Pyhon27 时,这将起作用。使用点作为分隔符:

-url: /testing_desc.html
 script: /testing.testing_desc.app
于 2013-11-07T01:25:14.440 回答
0

答案就在这里: 如何在 gae 的子文件夹中使用脚本?

它没有明确说明,但在答案中您必须在调用中更改/foo/为,它映射到. 如果你想映射到你需要在调用和 app.yaml 中的 url 处理程序中更改为/fooWSGIApplicationwww.bar.com/foowww.bar.com/foo.html/foo/foo.*WSGIApplication- url: /foo\.html

于 2013-11-06T19:58:14.287 回答
0

为了让我的脚本在子目录中工作,我将app.yamland更改/testing/testing_desc.py为:

应用程序.yaml:

- url: /testing.html
  script: testing/testing_desc.py

/testing/testing_desc.py:

app = webapp.WSGIApplication([('/.*', DescTstPage),], debug=True)

def main():
    run_wsgi_app(app)

if __name__ == '__main__':
    main()

ATM 我不明白如何使路由与子目录一起工作,所以我将使用它。

于 2013-11-06T16:04:04.983 回答
0

您正在将路由列表传递给您的 WSGIApplicaiton 调用。这些路由必须与正在处理的任何 URL 匹配。 ('/', DescTstPage)只需将 '/' URL 匹配到您的处理程序。/.*匹配所有路由。

你在什么路线上设置testing/testing_desc.app?他们必须匹配/testing_desc.html

于 2013-11-05T20:27:30.920 回答