以下是我的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
处理程序匹配,我只是得到一个空白的回复。
答案 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)
希望有所帮助。