在我的webapp2.RequestHandler方法中:
我想知道请求者想要获得哪个uri。 例如,如果用户想要“http://www.mysite.com/products/table” 我想进入变量值“table”(在本例中)
当我打印“self.request”时,我看到了RequestHandler类的所有值 但我没有设法找出我的案例中的正确属性。
我确信问题对你来说很简单,但我只是python和app-engine框架的首发。
答案 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
时,我得到了这个结果:
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/
,然后打印出来了: