在网络应用中,数据量庞大。为了提高用户体验度,让客户端根据自己的需求填写数据筛选条件。在tornado中,为了完成这个功能,在RequestHandler类为我们提供如下函数来接收参数:
若上述方法都无法获取就使用request属性。
获取查询参数建议使用:get_argument get_arguments get_query_argument get_query_arguments
获取查询参数不建议使用:get_body_argument get_body_arguments
获取请求体参数建议使用:get_argument get_arguments get_body_argument get_body_arguments
获取请求体参数不建议使用:get_query_argument get_query_arguments
from tornado import web
from tornado import ioloop
class IndexHandler(web.RequestHandler):
def get(self):
self.write('get请求')
'''
获取查询参数请求,可以使用如下方法
1. get_argument:具有给定名称的参数的值
2. get_arguments:具有给定名称的参数列表
3. get_query_argument:从查询字符串中返回具有给定名称的参数的值
4. get_query_arguments:返回具有给定名称的查询参数的列表
'''
# name = self.get_argument('name')
# pwd = self.get_argument('pwd')
# hobby = self.get_arguments('q')
# 效果:sxt===123===['吃饭', '睡觉', '玩手机']
# name = self.get_query_argument('name')
# pwd = self.get_query_argument('pwd')
# hobby = self.get_query_arguments('q')
# 效果:sxt===123===['吃饭', '睡觉', '玩手机']
# 不推荐使用!!!!!
# name = self.get_body_argument('name')
# pwd = self.get_body_argument('pwd')
# hobby = self.get_body_arguments('q')
# 效果:400 GET /?name=sxt&pwd=123&q=%E5%90%83%E9
# %A5%AD&q=%E7%9D%A1%E8%A7%89&q=%E7%8E%A9%E6%89%8B%E6%9C%BA (127.0.0.1) 3.02ms
# print(f'{name}==={pwd}==={hobby}')
def post(self):
self.write('post请求123')
'''
获取请求体参数,可以使用如下方法
1. get_argument:具有给定名称的参数的值
2. get_arguments:具有给定名称的参数列表
5. get_body_argument:从请求主体返回具有给定名称的参数的值
6. get_body_arguments:返回具有给定名称的主体参数列表
'''
# name = self.get_argument('name')
# pwd = self.get_argument('pwd')
# hobby = self.get_arguments('q')
# 效果:sxt===1234===['吃饭', '睡觉', '打豆豆']
# name = self.get_body_argument('name')
# pwd = self.get_body_argument('pwd')
# hobby = self.get_body_arguments('q')
# 效果:sxt===1234===['吃饭', '睡觉', '打豆豆']
# name = self.get_query_argument('name')
# pwd = self.get_query_argument('pwd')
# hobby = self.get_query_arguments('q')
# 效果:400 POST / (127.0.0.1) 2.99ms
# print(f'{name}==={pwd}==={hobby}')
# 获取请求参数时raw数据时,以上方法都无法获取,可能通过request.body对象
# 但是bytes,需要数据转换decode()转化成字符串
# 如果str是应该dict类型,可以通过json.loads进行数据转化
args = self.request.body.decode('utf-8')
from json import loads
args = loads(args)
print(args.get('name'))
# 效果:sxt
if __name__ == '__main__':
app = web.Application([('/', IndexHandler)], debug = True)
app.listen(8000)
ioloop.IOLoop.current().start()