tornado 之 RequestHandler(请求)
RequestHandler
from tornado.web import ReuqestHandler
一、利用HTTP协议想服务器传递参数
- 提取url的特定部分
- get方式传递参数
- http://127.0.0.1:8000/qzk/?name=qzk&age=18
- self.get_query_argument(name,default=ARG_DEFAULT,strip=True)
- 参数:
- name:从get请求参数字符串中返回指定参数的值,如果穿线过同名参数,则返回最后一个
- default:设置为未传的name参数是返回默认的值,如果default也没有设置,会抛出异常 tornado.web.MissingArgumentError
- strip:表示是否过滤掉左右两边的空白字符,默认为True
- self.get_query_arguments(name,strip=True)
- 返回的是list
- 示例:http://127.0.0.1:8000/qzk/?name=qzk&name=qqq
- -->返回 name_list = ['qzk','qqq']
- post方式传递参数
- http://127.0.0.1:8000/userinfo
- self.get_body_argument(name,default=ARG_DEFAULT,strip=True)
- 参数:
- name:从get请求参数字符串中返回指定参数的值,如果穿线过同名参数,则返回最后一个
- default:设置为未传的name参数是返回默认的值,如果default也没有设置,会抛出异常 tornado.web.MissingArgumentError
- strip:表示是否过滤掉左右两边的空白字符,默认为True
- self.get_body_arguments(name,strip=True)
- 返回的是list
- 示例:http://127.0.0.1:8000/userinfo
- -->返回 name_list = ['qzk','qqq']
- 既可以获取get请求,也可以获取post请求
- self.get_argument(name,default=ARG_DEFAULT,strip=True)
- self.get_arguments((name,strip=True)
- 注意:一般我们不太会用该方法,因为不太容易区分get/post
- 在http报文的头中增加自定义的字段
二、request对象
- 作用:存储关于请求的相关信息
- 属性:
- method:HTTP请求的方式
- host:被请求的主机名
- uri:请求的完整资源地址,包括路径和get查询参数的部分
- path:请求的路径部分
- query:请求的参数部分
- version:使用的http版本
- headers:请求的协议头,是一个字典类型
- body:请求体数据
- remote_ip:客户端的ip
- files:用户上传的文件,字典类型
三、tornado.httputil.HTTPFile对象
- 作用:接收到的文件对象
- 属性:
- filename:文件的实际名字
- body:文件的数据实体
- content_type:文件的类型
- 示例:
"""url-application"""
# -*- coding: utf-8 -*-
import tornado.web
from views import index
import config
class Application(tornado.web.Application):
def __init__(self):
handlers = [
(r'/uploadfiles', index.UploadFilesHandler),
]
super(Application, self).__init__(handlers, **config.settings)
import os
import config
class UploadFilesHandler(RequestHandler):
def get(self, *args, **kwargs):
self.render('upload.html')
def post(self, *args, **kwargs):
fileDict = self.request.files
print(fileDict)
for inputname in fileDict:
filelist = fileDict[inputname]
for file_obj in filelist:
filePath = os.path.join(config.BASE_DIR, 'media/' + file_obj.filename)
with open(filePath, 'wb') as f:
f.write(file_obj.body)
self.write('ok')
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>upload</title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<form action="/uploadfiles" method="post" enctype="multipart/form-data">
<br>
<input type="file" name="file">
<br>
<input type="file" name="file">
<br>
<input type="file" name="img">
<br>
<!--<input type="image" name="image">-->
<button class="btn btn-danger" >提交</button>
</form>
</body>
</html>
打印结果:
{
'file': [
{
'filename': 'a.txt',
'body': b'qwe',
'content_type': 'text/plain'
},
{
'filename': 'b.txt',
'body': b'asd',
'content_type': 'text/plain'
}
],
'img':[
{
'filename':'b2.png',
'body':b'...',
'content_type':'image/png'
}
]
}
tornado 之 RequestHandler(请求)的更多相关文章
- tornado异步web请求
1.为什么要使用异步web服务使用异步非阻塞请求,并发处理更高效. 2.同步与异步请求比较同步请求时,web服务器进程是阻塞的,也就是说当一个请求被处理时,服务器进程会被挂起直至请求完成. 异步请求时 ...
- 使用Tornado实现Ajax请求
Ajax,指的是网页异步刷新,一般的实现均为js代码向server发POST请求,然后将收到的结果返回在页面上. 这里我编写一个简单的页面,ajax.html <html> <h ...
- [转]Tornado get/post请求异步处理框架分析
转自: http://m.blog.csdn.net/blog/joeyon/41956027 首先说下环境,python2.7,Tornado3.0 然后本文讨论的不是Tornado底层如何用epo ...
- tornado框架设置
路由 import tornado.ioloop #开启循环 让服务器一直等待请求的到来 import tornado.web #框架基本功能封装在此模块 #例子 class MainHendler( ...
- Python+Tornado开发微信公众号
本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. 本教程针对的是已掌握Pyt ...
- Torando 入门
1. 前言 Tornado 是使用 Python 编写的一个强大的.可拓展性的 Web 服务器/框架.与其他主流 Web 服务器框架有着明显区别:Tornado 支持异步非阻塞框架.同时它处理速度非常 ...
- Python框架之Tornado(三)请求
概述 本篇就来详细介绍tornado服务器(socket服务端)是如何接收用户请求数据以及如果根据用户请求的URL处理并返回数据,也就是上图的3 系列所有步骤,如上图[start]是一个死循环,其中利 ...
- Python框架之Tornado(二)请求阶段
概述 上图是tornado程序启动以及接收到客户端请求后的整个过程,对于整个过程可以分为两大部分: 启动程序阶段,又称为待请求阶段(上图1.2所有系列和3.0) 接收并处理客户端请求阶段(上图3系列) ...
- 第三篇:白话tornado源码之请求来了
上一篇<白话tornado源码之待请求阶段>中介绍了tornado框架在客户端请求之前所做的准备(下图1.2部分),本质上就是创建了一个socket服务端,并进行了IP和端口的绑定,但是未 ...
随机推荐
- C学习笔记(8)--- 文件读写
1.C 文件读写: 一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节.C 语言不仅提供了访问顶层的函数,也提供了底层(OS)调用来处理存储设备上的文件. a.打开文件: FILE *f ...
- 无依赖单文件http-ftp文件服务器(py2)
网上看到的东东,居然在很合适堡垒机上传下载文件的场景. 这个只能在python2版本上跑, 我更改了自定义端口. 下次再改写个py3版本的. #!/usr/bin/env python "& ...
- caffe初体验
caffe是一个深度学习的框架, 具体我也不太清楚, 可以自行百度吧, 我也是刚刚知道有这么一个框架, 才疏学浅啊. 在安装完caffe, 我的第一个想法就是, 别管他是个啥东西, 总得先让我运行一些 ...
- 5、zabbix数据库分离
环境: zabbix端:zabbix3.4(192.168.80.66) 数据库端:mysql5.7(192.168.80.88) 被监控端:web01(192.168.80.240) 为什么要将数据 ...
- jenkins构建:通过testng.xml构建项目
1.项目的pom.xml中build下添加maven插件,xmlFileName为可变参数 2.jenkins新建maven项目 构建脚本: 原文:https://www.jianshu.com/p/ ...
- 《高性能MySQL》读后感——聚簇索引
<高性能MySQL>读后感——聚簇索引 聚簇索引并不是一种单独的索引类型,而是一种数据存储方式.比如,InnoDB的聚簇索引使用B+Tree的数据结构存储索引和数据. 当表有聚簇索引时,它 ...
- CF991C Candies
CF991C Candies 洛谷评测传送门 题目描述 After passing a test, Vasya got himself a box of nn candies. He decided ...
- ABP docker发布
环境:CentOS 7.6 64位 linux基本命令: cd:进入某个文件夹 mkdir:创建文件夹 ls:显示文件 ll:罗列出当前文件或目录的详细信息 判断是文件 还是文件夹: Linux系统中 ...
- 第01组 Beta版本演示
目录 1.1 本组成员 1.2 工作流程.组员分工.组员工作量比例 1.3 GitHub 项目链接 1.4 本组 Beta 冲刺站立会议博客链接汇总 1.5 燃尽图 1.6 原计划.达成情况及原因分析 ...
- 【新特性速递】CSS3动画增强
FineUIPro/Mvc/Core的下个版本(v6.1.0),我们对多个地方的CSS3动画进行了增强,使得用户体验更好. 1. 树控件启用EnableSingleExpand时,使得展开动画和折叠其 ...