什么是Tornado
Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼 Web应用框架
Tornado走的是少而精的方向,注重的是性能优越,它最出名的是异步非阻塞 的设计方式。
初识Tornado
创建web应用对象,并进行配置。
定义实现路由映射列表中的handler类。
创建服务器实例,绑定服务器端口。
启动当前线程的IOLoop,监听端口。
发送get / post请求。
options
利用tornado.options模块进行全局参数的定义
define():用来定义options选项变量的方法
参数
name:选项变量名,须保证全局唯一性
default:选项变量的默认值,默认为None
type:选项变量的类型。可以是str、float、int、datetime、timedelta中 的某个。
multiple:选项变量的值是否可以为多个,默认值为False。如果 multiple为True,那么选项变量是一个list列表值与值之间用
逗号分隔。
help:选项变量的帮助提示信息,默认为None
options的传值和使用
从配置文件中读取参数 parse_config_file(path)
p1 = v1
p2 =[“v1”,”v2”,”v3”]
路由列表
[
(r"/", Handler1),
(r"/path", Handler2, {“p1":“v1"}),
url(r"/path2", Handler3,
{“p1":“v1"},
name=“xxx_xxx")
]
获取初始化参数列表
添加url到路由列表,根据name反向解析路径
解析客户端的请求
解析请求路径 ...../xxx/yyy
未命名式获取 …/(正则1)/(正则2)
命名式获取 …/(?P<name1>正则1)/(?P<name2>正则2)
获取get方式请求参数
获取post方式请求参数
解析请求头request header
解析特殊请求体(json,图片)
RequestHandler.request对象
method HTTP的请求方式,如GET或POST;
host 被请求的主机名;
uri 请求的完整资源标示,包括路径和查询字符串;
path 请求的路径部分;
query 请求的查询字符串部分;
version 使用的HTTP版本;
headers 请求的协议头,是类似字典的对象,支持关键字索引的方式获取特定 协议头信息,例如:request.headers[“Content-
Type”],也可以用get的方 式获取指定特定协议头信息;
body 请求体数据(二进制格式);
remote_ip 客户端的IP地址;
files 用户上传的文件,为字典类型
响应内容的输出
write方法将响应的内容写入到缓冲区。当请求方法执行结束的时候,一次性 将缓冲区的内容返回给客户端。
字符串:write(’hello world!’)
设定状态码 set_status
抛出错误
send_error
write_error
设定响应头
set_headers
set_default_headers
Json:输出json.dumps(字典)
直接输出字典
界面跳转
方法调用顺序
set_defautl_headers()
initialize()
get / post
(set_default_headers()
write_error)
on_finish()
模板
不使用模板提交用户数据
手写各种HTML标签作为服务器的响应内容
设定模板路径
template-path = ‘’存放模板的文件夹‘’
template-path = “join(dirname(__file__),存放模板的文件夹)”
使用模板
渲染预置好的HTML文件:login.html,blog.html
模板的基本语法
变量
表达式
函数和自定义函数
控制语句
{% if ... %} ... {% elif ... %} ... {% else ... %} ... {% end %}
{% for ... in ... %} ... {% end %}
模板的其它用法
静态资源
static_path=“存放静态资源的文件夹”
static_path= join(dirname(__file__),”存放静态资源的文件夹”)
静态资源的使用(img的src,导入外部js,css)块
基础HTML,用{%block name%}…{%end%}标识可替换区域
继承基础HTML,选择需要替换的{%block name%}渲染
UI模块
转义
对可能模板中的< >等内容进行转义,防止潜在的恶意代码
关闭转义
全局关闭
全页面关闭
个别关闭
Chrome的特别安全机制(X-XSS-Protection)
个别开启转义