2010-11-04 38 views
0

我的网址是:“http:// localhost:8080/i/agt0b3R0eXN3b3JsZHIQCxIJSW1hZ2VCbG9iGIUDDA.jpg”,我只想要“agt0b3R0eXN3b3JsZHIQCxIJSW1hZ2VCbG9iGIUDDA”部分。Google应用引擎如何在获取请求中获取url的一部分?

我app.yaml的样子:

handlers: 
- url: /i/.* 
    script: static_images.py 

statc_images.py:

class StaticImage(webapp.RequestHandler): 
    def get(self): 
     image_blob_key = db.Key(self.request.get('')) # here I need the blob_key from url, in this case is "agt0b3R0eXN3b3JsZHIQCxIJSW1hZ2VCbG9iGIUDDA" 

     image_blob = db.get(image_blob_key) 

     if image_blob: 
      self.response.headers['Content-Type'] = 'image/jpeg' 
      self.response.out.write(image_blob.data) 
     else: 
      self.response.out.write("Image not available") 

def main(): 
    app = webapp.WSGIApplication([('/i/(\d+)\.jpg', StaticImage)], debug=True) # im not pretty sure this is good: '/i/(\d+)\.jpg' 
    run_wsgi_app(app) 

if __name__ == "__main__": 
    main() 

非常感谢! ;)

+1

属于在http://www.stackoverflow.com ... – kafuchau 2010-11-04 16:50:36

回答

3

我觉得你很亲密。试试这个:

class StaticImage(webapp.RequestHandler): 
    def get(self, blob_key): 
     image_blob = ImageModel.get(blob_key) 
     # if you want to use db.get you could. 

     if image_blob: 
      self.response.headers['Content-Type'] = 'image/jpeg' 
      self.response.out.write(image_blob.data) 
     else: 
      self.response.out.write("Image not available") 

def main(): 
    app = webapp.WSGIApplication([('/i/(.*)\.jpg', StaticImage)], debug=True) 
    run_wsgi_app(app) 

if __name__ == "__main__": 
    main() 
+2

您可能要列出的差异,为了清楚:圆括号的URL正则表达式的相关部分,并且参数添加到get方法接受子表达式的值。 – 2010-11-04 23:43:47