我正在设置一个新的GAE项目,我不能让我的脚本在子目录中工作。
编辑:如果我转到localhost:8080/testing_desc.html
我没有任何错误,只是一个空白页面(view-source也是空白的)。我的根目录中的脚本正常工作。根和子目录中都有__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)
的app.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
答案 0 :(得分:2)
当您使用WSGI Python27时,这将起作用。使用点作为分隔符:
-url: /testing_desc.html
script: /testing.testing_desc.app
答案 1 :(得分:0)
您正在将路由列表传递给您的WSGIApplicaiton调用。这些路由必须匹配正在处理的URL。
('/', DescTstPage)
只是将“/”网址与您的处理程序匹配。 /.*
匹配所有路线。
您在testing/testing_desc.app
设置了哪些路线?它们必须与/testing_desc.html
匹配。
答案 2 :(得分:0)
要让我的脚本在sub-dir中工作,我将app.yaml
和/testing/testing_desc.py
更改为:
的app.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我不明白如何使用sub-dir进行路由工作,所以我将使用它。
答案 3 :(得分:0)
答案在这里: How can i use script in sub folders on gae?
未明确说明,但在答案中,您必须在/foo/
来电中将/foo
更改为WSGIApplication
,该地址为www.bar.com/foo
。如果您要映射到www.bar.com/foo.html
,则需要在/foo
调用中将/foo.*
更改为WSGIApplication
,并将app.yaml中的网址处理程序更改为- url: /foo\.html