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(五)相关推荐

  1. 《Introduction to Tornado》中文翻译计划——第五章:异步Web服务

    http://www.pythoner.com/294.html 本文为<Introduction to Tornado>中文翻译,将在https://github.com/alioth3 ...

  2. 第二篇:白话tornado源码之待请求阶段

    上篇<白话tornado源码之一个脚本引发的血案>用上帝视角多整个框架做了一个概述,同时也看清了web框架的的本质,下面我们从tornado程序的起始来分析其源码. 概述 上图是torna ...

  3. Tornado源码分析 --- 静态文件处理模块

    每个web框架都会有对静态文件的处理支持,下面对于Tornado的静态文件的处理模块的源码进行分析,以加强自己对静态文件处理的理解. 先从Tornado的主要模块 web.py 入手,可以看到在App ...

  4. Tornado学习笔记(四)

    一.Tornado的语言国际化方法 Tornado做国际化折腾了一下下,Tornado这部分的官方文档太poor了.所以自己记录一下如何用tornado结合gettext做国际化. 第一步,在项目路径 ...

  5. TensorFlow Serving + Docker + Tornado机器学习模型生产级快速部署

    点击上方"AI搞事情"关注我们 内容转载自知乎:https://zhuanlan.zhihu.com/p/52096200 Justin ho 〉 本文将会介绍使用TensorFl ...

  6. Tornado web 框架

    一.简介 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过 ...

  7. 说说基于网络的五种IO模型

    # django不是一个异步框架 # tornado是异步的web框架# 处理每秒大量的请求# 个人理解的IO:就是应用层与内核驱动层的交互,这个过程无论从应用层到内核中,还是驱动层等待硬件层的数据, ...

  8. tornado项目搭建_Python深度学习原理及项目实战2019年3月21日上海举办

    一.课程背景 众所周知,人工智能是高级计算智能最宽泛的概念,机器学习是研究人工智能的一个工具,深度学习是机器学习的一个子集,是目前研究领域卓有成效的学习方法.深度学习的框架有很多,而TenforFlo ...

  9. Web框架 Bottle 、Flask 、Tornado

    Bottle Flask Tornado Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标 ...

  10. python web框架之Tornado

    说Tornado之前分享几个前端不错的网站: -- Bootstraphttp://www.bootcss.com/-- Font Awesomehttp://fontawesome.io/-- bx ...

最新文章

  1. cryptojs php 互通_关于PHP7和CryptoJS的AES加密方式互通
  2. WIN7系统中连接点(Junction Points)
  3. read和write函数的使用
  4. 十分钟上手 React+MirrorX,从此前端大神代码不再难懂 | 原力计划
  5. 安卓编译安装python_安卓源码编译环境搭建
  6. python自动化办公教程百度云-Python自动化测试视频教程【百度云盘下载】
  7. 2016蓝桥杯C++A:快速排序(详解版,很快掌握)
  8. php对接海康视频教程_海康安防管理平台Web视频对接
  9. 51单片机c语言开发工具keil安装
  10. linux更换steam目录,终于可以在Linux上愉快地玩耍Steam啦
  11. CS大作业--程序人生--Hello‘s P2P
  12. 【双碳政策】分布式光伏如何进行实时运维监测管理
  13. 华裔科学家成功解码脑电波 AI直接从大脑中合成语音
  14. 学习笔记(3):PS教程-【和东东一起学PS】Photoshop 2020小白到高手(任务驱动式基础+实战教学)-【免费试看】PS软件的必要首选项设置
  15. 查看云服务器信息,查看云服务器信息
  16. Java就业方向和自学提升方法总结黑马就业班资源分享
  17. 算法:数字的排列组合问题
  18. 关键业务(mission-critical)系统
  19. ML 学海拾贝 07/03/2018
  20. LandSat8遥感影像辐射定标与大气校正

热门文章

  1. server2019安装mysql_windows server2019下安装mysql8.0.11
  2. PyTorch1.4安装(Anaconda3 + Python3.6 + cpu版本)
  3. python包管理多个版本,python多版本以及各种包管理
  4. bin转txt工具_Shell笔记之常用工具
  5. fileboy v1.9 发布,文件变更监听通知系统
  6. redux工作原理简单入门
  7. mfc背景图片覆盖控件问题
  8. Struts2中Struts.xml的作用
  9. 【转参考】MySQL利用frm和ibd文件进行数据恢复
  10. Android boot.img system.img ramdisk.img的解释