gpt4 book ai didi

python - Tornado 网址不匹配? ("Interrogation") 标志

转载 作者:行者123 更新时间:2023-11-30 23:24:29 26 4
gpt4 key购买 nike

我正在使用 Tornado 创建网络服务。我学习了很多处理 URL 的方法,但我找不到处理此 URL 的方法:

Main-Dns:xxxx(port)/{System}(this is static)/{word}?q={word}

我的代码:

 import tornado.ioloop 
import tornado.web
import psycopg2
import json
import collections
import datetime
import decimal


application = tornado.web.Application([

(r"/system/(\w+)[?][q]=[\w+]",MainHandler),

])

if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()

仅当我删除“?”时,我尝试了许多正则表达式它有效

例如,对于此 URL,获取 uri:

uri:/system/4?q=
handler:r"/system/(\d)[?]q=",MainHandler

uri:/system/word_word?q=
handler:r"/system/(\w+)[?][q]=",MainHandler

该参数是可选的,我只放了“()”来测试发送参数。

我使用了Python正则表达式测试器网络,发现我可以工作,但在Tornado中我认为这不是一回事。

提前致谢。

编辑:更多示例

   Handle:/system/(\w+)[?]q=(\w+)
URL examples : /system/(any_word)?q=(any_word) like
/system/word_word?q=word
/system/wo5d_w5rd?q=w5ord

编辑:这是控制台输出:

             WARNING:tornado.access:404  GET/system/test?q=test

我可以不用“?”但我需要用“?”来做到这一点。

编辑:使用 get_argument() 方法,可能是这样的:

       Uri:/system/word?{last_name='Jackson_Smith'}  
to get this parameters: "word" , "last_name" , "'Jackson_Smith'"

最佳答案

您不想 try catch 正则表达式中的“?q=..”。您可以使用 get_argument 方法在 RequestHandler 本身中捕获该信息。

这是一个小例子,我认为它反射(reflect)了您想要做的事情:

#!/usr/bin/python

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
def get(self, word=None):
self.write("word is %s\n" % word)
self.write("uri is %s\n" % self.request.uri)
self.write("q is %s\n" % self.get_argument("q"))


application = tornado.web.Application([

(r"/system/(.+)",MainHandler),

])

if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()

这是示例输出:

dan@dan:~$ curl localhost:8888/system/4?q=44d
word is 4
uri is /system/4?q=44d
q is 44d
dan@dan:~$ curl localhost:8888/system/word_word?q=word
word is word_word
uri is /system/word_word?q=word
q is word
dan@dan:~$ curl localhost:8888/system/wo5d_w5rd?q=w5ord
word is wo5d_w5rd
uri is /system/wo5d_w5rd?q=w5ord
q is w5ord

关于python - Tornado 网址不匹配? ("Interrogation") 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23395170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com