Tornado设置get_argument的最小值和最大值

时间:2013-04-14 00:39:48

标签: python python-2.7 tornado

我目前正在使用Tornado RequestHandler.get_argument来获取http POST和GET参数。 RequestHandler.get_argument允许您设置默认值。龙卷风有办法吗? 有没有办法在龙卷风中设置GET和POST参数的最大值和最小值?

1 个答案:

答案 0 :(得分:1)

为什么不使用简单的if语句?

例如,如果您的最低可接受值为7且最大可接受值为47,您可以写:

def post(self):
    my_arg = self.get_argument('my_arg')
    if not 7 <= my_arg <= 47:
        raise tornado.web.HTTPError(400)  # 400 Bad Request

如果您经常这样做,可以尝试覆盖该方法,例如:

class MyHandler(tornado.web.RequestHandler):

    def get_argument(self, name, minimum, maximum):
        argument = super(MyHandler, self).get_argument(name)
        if not minimum <= argument <= maximum:
            raise tornado.web.HTTPError(400)  # 400 Bad Request
        return argument

    def post(self):
        small_arg = self.get_argument('small_arg', 1, 3)
        medium_arg = self.get_argument('medium_arg', 7, 47)
        large_arg = self.get_argument('large_arg', 9001, 10000)

随意选择其他HTTP Status Code