Google App Engine:从URL处理程序为脚本提供参数?

时间:2010-03-02 03:00:09

标签: python google-app-engine

以下是我的app.yaml文件的一部分:

handlers:
- url: /remote_api
  script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
  login: admin
- url: /detail/(\d)+
  script: Detail.py
- url: /.*
  script: Index.py

我希望该捕获组(由(\d)表示的那个)可用于脚本Detail.py。我怎么能这样做?

我是否需要找出一种从Detail.py访问GET数据的方法?

此外,当我导航到/fff之类的网址时,它应与Index.py处理程序匹配,我只是得到一个空白的回复。

1 个答案:

答案 0 :(得分:11)

我看到两个问题,如何将url路径的元素作为变量传递给处理程序,以及如何使catch-all正确呈现。

这两者与处理程序中的main()方法有关,而不是app.yaml

1)要传递/detail/(\d)网址中的ID,您需要这样的内容:

class DetailHandler(webapp.RequestHandler):
    def get(self, detail_id):
      # put your code here, detail_id contains the passed variable

def main():
  # Note the wildcard placeholder in the url matcher
  application = webapp.WSGIApplication([('/details/(.*)', DetailHandler)]
  wsgiref.handlers.CGIHandler().run(application)

2)为了确保你的Index.py抓住所有东西,你需要这样的东西:

class IndexHandler(webapp.RequestHandler):
    def get(self):
      # put your handler code here

def main():
  # Note the wildcard without parens
  application = webapp.WSGIApplication([('/.*', IndexHandler)]
  wsgiref.handlers.CGIHandler().run(application)

希望有所帮助。