app-engine:请求数据

时间:2011-12-10 13:17:51

标签: python google-app-engine web webapp2

在我的webapp2.RequestHandler方法中:

我想知道请求者想要获得哪个uri。 例如,如果用户想要“http://www.mysite.com/products/table” 我想进入变量值“table”(在本例中)

当我打印“self.request”时,我看到了RequestHandler类的所有值 但我没有设法找出我的案例中的正确属性。

我确信问题对你来说很简单,但我只是python和app-engine框架的首发。

1 个答案:

答案 0 :(得分:3)

查看应如何处理URL以及通配符URL。试试这个:

class ProductsHandler(webapp.RequestHandler):
    def get(self, resource):
        self.response.headers['Content-Type'] = 'text/plain'
        table = self.request.url
        self.response.out.write(table)
        self.response.out.write("\n")
        self.response.out.write(resource)

def main():
    application = webapp.WSGIApplication([
        ('/products/(.*)', ProductsHandler)
        ],
        debug=True)
    util.run_wsgi_app(application)

当我转到网址http://localhost:8080/products/table时,我得到了这个结果:

  

http://localhost:8080/products/table
  表

resource函数的get参数由WSGIApplication url_mapping自动传递,因为它映射到:

('/products/(.*)', ProductsHandler)

(.*)是一个通配符,并作为方法参数传入。

您可以在get方法中为参数命名,而不是resource,例如table。但这并没有多大意义,因为如果你传入像http://localhost:8080/products/fish这样的网址,它将不再包含“table”这个词。


早期尝试(编辑前):

尝试这样的事情:

class MainHandler(webapp.RequestHandler):
    def get(self):
        table = self.request.url
        self.response.out.write(table)

对于我的测试,我去了http://localhost:8080/,然后打印出来了:

  

http://localhost:8080/

请参阅the docs for the Request class here