概述
1. get_argument(name,default=_ARG_DEFAULT,strip=True)
2. get_arguments(name,strip=True)
3. get_body_argument(name,default=_ARG_DEFAULT,strip=True)
4. get_body_arguments(name,strip=True)
5. get_query_argument(name,default=_ARG_DEFAULT,strip=True)
6. get_query_arguments(name,strip=True):
简介
一 RequestHandler.get_argument()和RequestHandler.get_arguments():
实际上是通过RequestHandler._get_argument()和RequestHandler._get_arguments()对HTTPServerRequest.arguments进行一些去空格,编码,默认值等操作。HTTPServerRequest.arguments包括GET和POST请求的所有参数。
get_argument()实际上是获取的get_arguments()[-1]。
class HTTPServerRequest(object):
attribute:arguments
GET/POST arguments are available in the arguments property, which
maps arguments names to lists of values (to support multiple values
for individual names). Names are of type `str`, while arguments
are byte strings. Note that this is different from
`.RequestHandler.get_argument`, which returns argument values as
unicode strings.
二 RequestHandler.get_query_argument()和RequestHandler.get_query_arguments():
实际上是通过RequestHandler._get_argument()和RequestHandler._get_arguments()对HTTPServerRequest.query_arguments进行一些去空格,编码,默认值等操作。HTTPServerRequest.query_arguments只包括请求的url上所带的参数。
class HTTPServerRequest(object):
attribute: query_arguments
Same format as ``arguments``, but contains only arguments extracted
from the query string.
二 RequestHandler.get_body_argument()和RequestHandler.get_body_arguments():
HTTPServerRequest.body_arguments只包括请求body里所带的参数。
class HTTPServerRequest(object):
attribute: body_arguments
Same format as ``arguments``, but contains only arguments extracted
from the request body.
实例
1. 获取url后的参数
url = '127.0.0.1:8080/test?search_title=测试标题1&search_title=测试标题2&search_name=测试名称&test_body=测试'
若存在多个重复的参数名,利用get_argument(),get_query_argument只能获取最后一个,即'测试标题2'。利用get_arguments(),get_query_arguments()能获得一个unicode编码的list,得到所有相同参数名的参数。
get_body_argument(),get_body_arguments()不能获取url中的参数。
search_title =self.get_argument('search_title','') # 测试标题2
search_titles = self.get_arguments('search_title', []) # unicode编码的list, 实际为[测试标题1,测试标题2]
search_name =self.get_query_argument('search_name','') # 测试名称
search_names =self.get_query_arguments('search_name',[]) # unicode编码的list, 实际为[测试名称]
test_body_argument = self.get_body_argument('test_body','') # ''
2. form表单序列化后的数据。
表单中多个同名<input name='step_title' />,利用get_arguments()和get_body_arguments()获取list。
flow_title =self.get_argument('flow_title','') # 测试流程
test_flow_title=self.get_body_argument('flow_title','') # 测试流程
step_titles =self.get_arguments('step_title',[]) # list
tesst_step_titles=self.get_body_arguments('step_title',[]) # list
3. js相关
var data = {'test_arg', 'v1'} // 同个'test_arg'获取
var list_data = {'test_arg', ['v1', 'v2']} // 通过'test_list[]'获取
test_arg=self.get_argument('test_arg', '')
test_args=self.get_arguments('test_arg[]', '') # 获取到list
参考
1. tornado/web.py
2. tornado/httputil.py
3. tornado/escape.py