不能捕捉'?'在龙卷风python中获取请求

时间:2015-12-13 06:41:48

标签: python tornado

以下是我的代码

import tornado.httpserver 
import tornado.ioloop 
import tornado.web


class handle_request(tornado.web.RequestHandler):   
    def get(self,path):
       self.write(path+"..............///")        

app = tornado.web.Application(handlers=[(r"/(.*)", handle_request)])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(9999) 
print("http://127.0.0.1:9999")
tornado.ioloop.IOLoop.instance().start()

当我到达网址http://127.0.0.1/jo时,它正在打印jo..............//这是正确的但是当我用jo替换jo?g时,它仍然打印相同的jo...............//我不想要的。那么如何捕捉'?'来自网址。 我注意到,如果我通过jo%3Fg,那么它正在打印jo?g.........//但是如何做到这一点?

1 个答案:

答案 0 :(得分:0)

网址结构如下(URL):

 scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]

sda=qwe是一个查询(或查询字符串),它不是路径的一部分,?只是分隔符。要捕获query,请使用request.query

import tornado.httpserver
import tornado.ioloop
import tornado.web


class handle_request(tornado.web.RequestHandler):
    def get(self,path):
        self.write(
            "{}{}..............///".format(
                path, self.request.query)
        )
        # or whole uri part
        self.write(
            "{}.............///".format(self.request.uri)
        )

app = tornado.web.Application(handlers=[(r"/(.*)", handle_request)])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(9999)
print("http://127.0.0.1:9999")
tornado.ioloop.IOLoop.instance().start()

单独获取params(解析查询)使用请求的方法get_argument