博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tornado(五)
阅读量:6820 次
发布时间:2019-06-26

本文共 2593 字,大约阅读时间需要 8 分钟。

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":[
      ,
      ], "form_filename2":[
      ,], ... }
      tornado.httputil.HTTPFile是接收到的文件对象,它有三个属性:
      • filename 文件的实际名字,与form_filename1不同,字典中的键名代表的是表单对应项的名字;
      • body 文件的数据实体;
      • content_type 文件的类型。 这三个对象属性可以像字典一样支持关键字索引,如request.files["form_filename1"][0]["body"]。

import tornado.webimport tornado.ioloopimport tornado.httpserverimport tornado.optionsfrom tornado.options import options, definefrom 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.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
.+)/(?P
\d+)", SubjectDateHandler), # 命名方式 ])

    与django类似

 

转载于:https://www.cnblogs.com/lihao-like/p/9437855.html

你可能感兴趣的文章
asp.net mvc 如何调用微信jssdk接口:分享到微信朋友(圈)| 分享到qq空间
查看>>
Redis主从配置
查看>>
全面掌握ping命令(四)ping命令常用参数
查看>>
【C语言】编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数。...
查看>>
mysql用户管理、常用sql语句、mysql数据库备份恢复
查看>>
五大常用算法
查看>>
说说这些年做的云计算和大数据项目
查看>>
java基础第十二天_集合
查看>>
最新一代企业管理软件功能介绍
查看>>
12 种编程语言的起源故事
查看>>
Linux crond 定时任务
查看>>
linux 文件删除详解
查看>>
linux下虚拟终端terminator安装和使用
查看>>
Java多线程学习(六)Lock锁的使用
查看>>
java异常处理的机制 java 架构师学习 java北京
查看>>
史上最全Python数据类型详解
查看>>
青藤出品:【重磅】2017年云安全预测
查看>>
Python赋值混淆例题分析与三双单引号使用
查看>>
Linux基础知识
查看>>
学习的本质,不在于记住多少知识,而是它触发了你哪些思考
查看>>