tornado(五)
tornado的输入
- 查询字符串(query string),形如key1=value1&key2=value2;
- 请求体(body)中发送的数据,比如表单数据、json、xml;
- 提取uri的特定部分,如/blogs/2016/09/0001,可以在服务器端的路由中用正则表达式截取;
- 在http报文的头(header)中增加自定义字段,如X-XSRFToken=itcast。
1.获取查询字符串参数
get_query_argument(键名,default=默认值 ,strip=是否过滤两边空白字符,默认True)
get_query_arguments()同上。当一个键对应多个值时返回列表,上方法仅返回最后一个
2.获取请求体参数
get_body_argument() 同上
get_body_arguments() 同上
说明
对于请求体中的数据要求为字符串,且格式为表单编码格式(与url中的请求字符串格式相同),即 key1=value1&key2=value2,HTTP报文头Header中的"Content-Type"为application/x-www-form-urlencoded 或 multipart/form-data。对于请求体数据为json或xml的,无法通过这两个方法获取。
3.以上两类方法的整合
get_argument() 同上
get_arguments() 同上
以上方法返回的都是unicode字符串
4.关于请求的其他信息
RequestHandler.request 对象存储了关于请求的相关信息,具体属性有:
- method HTTP的请求方式,如GET或POST;
- host 被请求的主机名;
- uri 请求的完整资源标示,包括路径和查询字符串;
- path 请求的路径部分;
- query 请求的查询字符串部分;
- version 使用的HTTP版本;
- headers 请求的协议头,是类字典型的对象,支持关键字索引的方式获取特定协议头信息,例如:request.headers["Content-Type"]
- body 请求体数据;
- remote_ip 客户端的IP地址;
- files 用户上传的文件,为字典类型,型如:
{"form_filename1":[<tornado.httputil.HTTPFile>, <tornado.httputil.HTTPFile>],"form_filename2":[<tornado.httputil.HTTPFile>,],... }
tornado.httputil.HTTPFile是接收到的文件对象,它有三个属性:
- filename 文件的实际名字,与form_filename1不同,字典中的键名代表的是表单对应项的名字;
- body 文件的数据实体;
- content_type 文件的类型。 这三个对象属性可以像字典一样支持关键字索引,如request.files["form_filename1"][0]["body"]。
import tornado.web import tornado.ioloop import tornado.httpserver import tornado.options from tornado.options import options, define from tornado.web import RequestHandlerdefine("port", default=8000, type=int, help="run server on the given port.")class IndexHandler(RequestHandler):def get(self):self.write("hello itcast.")class UploadHandler(RequestHandler): def post(self):files = self.request.filesimg_files = files.get('img')if img_files:img_file = img_files[0]["body"]file = open("./itcast", 'w+')file.write(img_file)file.close()self.write("OK")if __name__ == "__main__":tornado.options.parse_command_line()app = tornado.web.Application([(r"/", IndexHandler),(r"/upload", UploadHandler),])http_server = tornado.httpserver.HTTPServer(app)http_server.listen(options.port)tornado.ioloop.IOLoop.current().start()
5.tornado支持正则提取url中的参数
app = tornado.web.Application([(r"/", IndexHandler),(r"/sub-city/(.+)/([a-z]+)", SubjectCityHandler), # 无名方式(r"/sub-date/(?P<subject>.+)/(?P<date>\d+)", SubjectDateHandler), # 命名方式])
与django类似
转载于:https://www.cnblogs.com/lihao-like/p/9437855.html
tornado(五)相关推荐
- 《Introduction to Tornado》中文翻译计划——第五章:异步Web服务
http://www.pythoner.com/294.html 本文为<Introduction to Tornado>中文翻译,将在https://github.com/alioth3 ...
- 第二篇:白话tornado源码之待请求阶段
上篇<白话tornado源码之一个脚本引发的血案>用上帝视角多整个框架做了一个概述,同时也看清了web框架的的本质,下面我们从tornado程序的起始来分析其源码. 概述 上图是torna ...
- Tornado源码分析 --- 静态文件处理模块
每个web框架都会有对静态文件的处理支持,下面对于Tornado的静态文件的处理模块的源码进行分析,以加强自己对静态文件处理的理解. 先从Tornado的主要模块 web.py 入手,可以看到在App ...
- Tornado学习笔记(四)
一.Tornado的语言国际化方法 Tornado做国际化折腾了一下下,Tornado这部分的官方文档太poor了.所以自己记录一下如何用tornado结合gettext做国际化. 第一步,在项目路径 ...
- TensorFlow Serving + Docker + Tornado机器学习模型生产级快速部署
点击上方"AI搞事情"关注我们 内容转载自知乎:https://zhuanlan.zhihu.com/p/52096200 Justin ho 〉 本文将会介绍使用TensorFl ...
- Tornado web 框架
一.简介 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过 ...
- 说说基于网络的五种IO模型
# django不是一个异步框架 # tornado是异步的web框架# 处理每秒大量的请求# 个人理解的IO:就是应用层与内核驱动层的交互,这个过程无论从应用层到内核中,还是驱动层等待硬件层的数据, ...
- tornado项目搭建_Python深度学习原理及项目实战2019年3月21日上海举办
一.课程背景 众所周知,人工智能是高级计算智能最宽泛的概念,机器学习是研究人工智能的一个工具,深度学习是机器学习的一个子集,是目前研究领域卓有成效的学习方法.深度学习的框架有很多,而TenforFlo ...
- Web框架 Bottle 、Flask 、Tornado
Bottle Flask Tornado Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标 ...
- python web框架之Tornado
说Tornado之前分享几个前端不错的网站: -- Bootstraphttp://www.bootcss.com/-- Font Awesomehttp://fontawesome.io/-- bx ...
最新文章
- cryptojs php 互通_关于PHP7和CryptoJS的AES加密方式互通
- WIN7系统中连接点(Junction Points)
- read和write函数的使用
- 十分钟上手 React+MirrorX,从此前端大神代码不再难懂 | 原力计划
- 安卓编译安装python_安卓源码编译环境搭建
- python自动化办公教程百度云-Python自动化测试视频教程【百度云盘下载】
- 2016蓝桥杯C++A:快速排序(详解版,很快掌握)
- php对接海康视频教程_海康安防管理平台Web视频对接
- 51单片机c语言开发工具keil安装
- linux更换steam目录,终于可以在Linux上愉快地玩耍Steam啦
- CS大作业--程序人生--Hello‘s P2P
- 【双碳政策】分布式光伏如何进行实时运维监测管理
- 华裔科学家成功解码脑电波 AI直接从大脑中合成语音
- 学习笔记(3):PS教程-【和东东一起学PS】Photoshop 2020小白到高手(任务驱动式基础+实战教学)-【免费试看】PS软件的必要首选项设置
- 查看云服务器信息,查看云服务器信息
- Java就业方向和自学提升方法总结黑马就业班资源分享
- 算法:数字的排列组合问题
- 关键业务(mission-critical)系统
- ML 学海拾贝 07/03/2018
- LandSat8遥感影像辐射定标与大气校正
热门文章
- server2019安装mysql_windows server2019下安装mysql8.0.11
- PyTorch1.4安装(Anaconda3 + Python3.6 + cpu版本)
- python包管理多个版本,python多版本以及各种包管理
- bin转txt工具_Shell笔记之常用工具
- fileboy v1.9 发布,文件变更监听通知系统
- redux工作原理简单入门
- mfc背景图片覆盖控件问题
- Struts2中Struts.xml的作用
- 【转参考】MySQL利用frm和ibd文件进行数据恢复
- Android boot.img system.img ramdisk.img的解释