开发者

Google App Engine: Give arguments to a script from URL handler?

Here is a portion of my app.yaml file:

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

I want that capture group (the one signified by (\d)) to be available to the script Detail.py. How can I do this?

Do I need to figure out a way to access GET data from Detail.py?

Also, when I navigate to a URL like /fff, which should match the Index.py handler, I just get a blank response.


I see two questions, how to pass elements of the url path as variables in the handler, and how to get the catch-all to render properly.

Both of these have more to do with the main() method in the handler than the app.yaml

1) to pass the id in the /detail/(\d) url, you want something like this:

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) to ensure your Index.py catches everything, you want something like this:

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)

Hope that helps.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜