http://127.0.0.1/?a=1&b=2&c=3&d=4&e=5&f=6&g=7
像上面那样,我现在想把 a b c d e f g 这些参数一次性取到,但是通过 get_argument 方法每次只能取一个参数,大家有没有什么简单的办法把所有参数全部取到?
像上面那样,我现在想把 a b c d e f g 这些参数一次性取到,但是通过 get_argument 方法每次只能取一个参数,大家有没有什么简单的办法把所有参数全部取到?
1
talentsnail Jul 19, 2013 get_arguments()
|
2
zeyexe OP @talentsnail 这个方法实际上是获取某个参数的全部值。是用在 http://127.0.0.1/?a=1&a=2&a=3 这种情况下的。
|
3
jkeylu Jul 19, 2013 self.request.arguments
|
4
kernel1983 Jul 19, 2013 http://www.tornadoweb.org/en/stable/httpserver.html
method HTTP request method, e.g. “GET” or “POST” uri The requested uri. path The path portion of uri query The query portion of uri version HTTP version specified in request, e.g. “HTTP/1.1” tornado的文档是比较吊, 基本上无视初学者的感受 |
5
zeyexe OP |
6
hiwljun Jul 19, 2013 web.py的web.input()非常好用,tornado里我的做法是这样的:
在BaseHandler加个input函数获取所有的值并转换成storage: from Storage import storage def input(elf): i = storage() args = self.request.arguments for a in args: i[a] = self.get_argument(a) return i i["files"], i["path"]这些再另作处理下。就可以用self.input()获取所有GET和POST的值了。 |
8
hiwljun Jul 19, 2013
@zeyexe 是的。
__author__ = 'Aaron Swartz' class Storage(dict): """ A Storage object is like a dictionary except `obj.foo` can be used in addition to `obj['foo']`. >>> o = storage(a=1) >>> o.a 1 >>> o['a'] 1 >>> o.a = 2 >>> o['a'] 2 >>> del o.a >>> o.a Traceback (most recent call last): ... AttributeError: 'a' """ def __getattr__(self, key): try: return self[key] except KeyError, k: raise AttributeError, k def __setattr__(self, key, value): self[key] = value def __delattr__(self, key): try: del self[key] except KeyError, k: raise AttributeError, k def __repr__(self): return '<Storage ' + dict.__repr__(self) + '>' storage = Storage |
9
lq611 Aug 20, 2013
self.request.arguments
|
10
bwangel Sep 9, 2016 刚刚看 tornado 源码,突然想起这个帖子来了。
我现在看的 tornado 版本是 4.4.1 在 HTTPServerRequest 对象(也就是 get 方法中的 self.request 对象)中,有三个属性 `arguments`: 所有的 post/get 参数字典 `query_arguments`: 所有的 get 参数字典 `body_arguments`: 所有的 post 参数字典 现在文档中也有写了: http://www.tornadoweb.org/en/stable/httputil.html#tornado.httputil.HTTPServerRequest.query_arguments |