在Tornado中使用多个参数进行POST查询

时间:2015-09-16 10:42:51

标签: python post tornado

代码:

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)

1 个答案:

答案 0 :(得分:1)

POST请求(通常)有一个正文,所以如果您想要URL中的所有内容,您可能需要GET而不是POST。

传递参数的常规方法是对它们进行表单编码。以?开头,如下所示:/number?messenger=telegram&phone=12345。要在Tornado中使用这样的参数,可以使用self.get_argument("messenger")而不是get()方法的参数。

传递参数的第二种方法是将它们放入"路径" URL的一部分,没有问号。这是在您的路由模式中使用(.*?)并在get()中使用参数时。如果您因某种原因(通常是美学)想要避开问号,请使用此选项。

您还可以将两者结合使用:在此处完成传递网址中的信使参数,然后添加?number=12345并使用get_argument。但除非你真的关心你的网址是什么样的,否则我推荐第一种形式。