tornado(五)

lihao-like 2018-08-07 原文

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 RequestHandler

define("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.files
        img_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类似

 

发表于 2018-08-07 16:36 roseli 阅读() 评论() 编辑 收藏

 

版权声明:本文为lihao-like原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lihao-like/p/9437855.html

tornado(五)的更多相关文章

  1. python包合集-cffi

    一、cfficffi是连接Python与c的桥梁,可实现在Python中调用c文件。cffi为c语言的外部接口,在Python中使用该接口可以实现在Python中使用外部c文件的数据结构及函数。二、直接在python中通过cffi定义c...

  2. python线程

    1、概念cpu执行程序的最小单位,从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程。Python可以运行多线程,但和单核CPU多进程一样,在给定时刻只有一个线程会执行。2、一个进程资源包含多个线程 f...

  3. Python基础学习参考(七):字典和集合

    一.字典 字典跟列表一样是一组数据的集合。它的特点是什么呢? 特点一:字典具有键(key)和值(value), […]...

  4. python 下载安装及运行环境配置(windows)

    第一步:下载python安装包 下载地址:https://www.python.org/downloads/w […]...

  5. 快速上手pandas(下)

      和上文一样,先导入后面会频繁使用到的模块: In [1]: import numpy as np impo […]...

  6. WebGL three.js学习笔记 6种类型的纹理介绍及应用

    WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo […]...

  7. Python time clock()方法

    描述 Python time clock() 函数以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗 […]...

  8. Python 爬虫从入门到进阶之路(十六)

    之前的文章我们介绍了几种可以爬取网站信息的模块,并根据这些模块爬取了《糗事百科》的糗百内容,本章我们来看一下用 […]...

随机推荐

  1. intellij idea 和 myeclipse 转换

    原文出处:http://chinaxxren.iteye.com/blog/893970 当只用 intell […]...

  2. 《吃透MQ系列》核心基础全在这里了

    这是《吃透XXX》技术系列的开篇,这个系列的思路是:先找到每个技术栈最本质的东西,然后以此为出发点,逐渐延伸出 […]...

  3. MySQL AUTO_INCREMENT 学习总结

    正文 之前有碰到过开发同事指出一张InnoDB表的自增列 AUTO_INCREMENT 值莫明的变大,由于这张 […]...

  4. IP通信类型与地址类型

    单播 Unicast 一对一  (两个人) 广播 Broadcast 同一网段(大家) DHCP IP 组播 […]...

  5. 2019最新版Java程序员零基础入门视频教程资料(全套)

    为了解决Java学习初学者在网上找视频难的事情,本人整理了一份2019年度最新版的Java学习视频教程。希望看 […]...

  6. 配置VNC并远程控制服务器(电脑)

    先象征性介绍一下: VNC (Virtual Network Console)是虚拟网络控制台的缩写, 它是一 […]...

  7. Windows2012R2 时间同步设置

      Windows2012R2里没有了internet时间,或者Internet时间无法同步成功,都可以尝试使 […]...

  8. Python学习笔记:迭代器(Iterator)详解

    一、可迭代的对象(Iterable) 1、定义:可以直接用在循环的数据类型,如list,tuple,dict, […]...

展开目录

目录导航