代码:
class Telegram(tornado.web.RequestHandler):
def my_f(self,number):
return number
def get(self,number):
self.write( self.my_f(number))
application = tornado.web.Application([
(r"/number/(.*?)", Telegram),
])
使用这段代码,我可以触发Telegram,从(。*?)部分提供它。
问题是:我需要进行如下的POST查询: /数字/信使=电报&安培;电话= 3332223332211
这样我就可以获取信使参数和电话参数,并使用提供的电话号码触发正确的班级(如电报3332223332211)
答案 0 :(得分:1)
POST请求(通常)有一个正文,所以如果您想要URL中的所有内容,您可能需要GET而不是POST。
传递参数的常规方法是对它们进行表单编码。以?
开头,如下所示:/number?messenger=telegram&phone=12345
。要在Tornado中使用这样的参数,可以使用self.get_argument("messenger")
而不是get()
方法的参数。
传递参数的第二种方法是将它们放入"路径" URL的一部分,没有问号。这是在您的路由模式中使用(.*?)
并在get()
中使用参数时。如果您因某种原因(通常是美学)想要避开问号,请使用此选项。
您还可以将两者结合使用:在此处完成传递网址中的信使参数,然后添加?number=12345
并使用get_argument
。但除非你真的关心你的网址是什么样的,否则我推荐第一种形式。