Изучил, как следует обрабатывать 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)
Когда я перехожу по URL-адресу http://localhost:8080/products/table
, я получаю такой результат:
Таблица http://localhost:8080/products/table
Параметр resource
функции get
автоматически передается классом WSGIApplication
< /a> url_mapping
, потому что он сопоставляется с:
('/products/(.*)', ProductsHandler)
(.*)
является подстановочным знаком и передается в качестве параметра метода.
Вы можете назвать параметр в методе get
как угодно вместо resource
, например table
. Однако это не имело бы большого смысла, потому что, если вы передадите URL-адрес, например http://localhost:8080/products/fish
, он больше не будет содержать слово «таблица».
Более ранняя попытка (до редактирования):
Попробуйте что-то вроде этого:
class MainHandler(webapp.RequestHandler):
def get(self):
table = self.request.url
self.response.out.write(table)
Для моего теста я пошел в http://localhost:8080/
, и он распечатал:
http://localhost:8080/
См. документацию для класса Request
здесь.
10.12.2011