Изучил, как должны обрабатываться 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
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
класса здесь .