不幸的是,似乎沒有辦法從「prepare」訪問url正則表達式匹配。
查看tornado/web.py
中的代碼,特別是949行,prepare
完全不帶參數調用。
我已經破解了一個解決方案,該解決方案有效,但它不是健壯的......在這裏。
import tornado.ioloop
import tornado.web
from tornado import escape
class MainHandler(tornado.web.RequestHandler):
def prepare(self):
# work out url regex match as in
# tornado/web.py:1283
handlers = self.application._get_host_handlers(self.request)
for spec in handlers:
match = spec.regex.match(self.request.path)
def unquote(s):
if s is None: return s
return escape.url_unescape(s, encoding=None)
args = [unquote(s) for s in match.groups()]
# do something with args
def get(self, who):
self.write('hello ' + who)
if __name__ == "__main__":
application = tornado.web.Application([
(r"/(\w+)", MainHandler),
])
application.listen(8999)
tornado.ioloop.IOLoop.instance().start()
什麼訪問request.arguments [製備](http://www.tornadoweb.org/documentation/web.html?highlight=prepare#tornado.web.RequestHandler.prepare)。這是通常GET/POST參數驗證的地方。 – lbolla
我不想要求參數。我需要URL參數。例如,如果我的網址是「/ page /(\ d +)」,我想要數字(\ d +)。 – Mark