[英]not able to capture '?' in get request in tornado python
下面是我的代碼
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?g
替換jo
,它仍在打印相同的jo...............//
我不想。 那么如何捕捉“?” 來自網址。 我注意到,如果我通過jo%3Fg
那么它正在打印jo?g.........//
但該怎么做?
網址結構如下( 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()
要單獨獲取參數(解析的查詢),請使用請求的方法get_argument 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.