我有一个 App Engine 项目结构设置如下:
- 项目根
- 应用程序.yaml
- 索引.yaml
- 主文件
- 静态 [目录]
- 索引.html
- 应用程序 [目录]
- 脚本1.py
- 脚本2.py
我的 app.yaml 看起来像这样
application: appname
version: 1
runtime: python27
api_version: 1
threadsafe: no
handlers:
- url: /(.*\.html)
mime_type: text/html
static_files: static/\1
upload: static/(.*\.html)
expiration: "1h"
# application scripts
- url: /app/(.+)
script: main.py
# index files
- url: /(.+)/
static_files: static/\1/index.html
upload: static/(.+)/index.html
expiration: "15m"
- url: /(.+)
static_files: static/\1/index.html
upload: static/(.+)/index.html
expiration: "15m"
# site root
- url: /
static_files: static/index.html
upload: static/index.html
expiration: "15m"
libraries:
- name: webapp2
version: "2.5.1"
我的 main.py 只是默认的“Hello World”示例应用程序:
#!/usr/bin/env python
import webapp2
class MainHandler(webapp2.RequestHandler):
def get(self):
self.response.out.write('Hello world!')
#print("Executing script!")
app = webapp2.WSGIApplication([(r'/app/(.*)', MainHandler)],
debug=True)
现在,可以按预期访问静态 html。映射到 app.yaml 中指定的 main.py 脚本的 url 有效,我知道该脚本正在执行。我遇到的问题是在 main.py 中指定到 WSGIApplication 的 URL 映射。我希望能够使用 url 访问应用程序脚本: localhost:808x/app/something 我已经尝试过使用以下模式:
r'/app/(.*)'
r'/(.*)'
r'/'
r'/app/'
上述模式都不会导致调用“get”响应处理程序(即我没有得到“Hello World”响应)。我已经尝试从文档中收集我做错了什么。我认为这一切都归结为我刚刚开始掌握正则表达式。有人可能会指出我需要将应用程序处理程序映射到什么模式?