目 录
- 第一章:引言
- 1.1 Tornado是什么?
- 1.1.1 Tornado入门
- 1.1.2 社区和支持
- 1.2 简单的Web服务
- 1.2.1 Hello Tornado
- 1.2.1.1 参数handlers
- 1.2.1.2 使用正则表达式指定路径
- 1.2.2 字符串服务
- 1.2.3 关于RequestHandler的更多知识
- 1.2.3.1 HTTP方法
- 1.2.3.2 HTTP状态码
- 1.2.4 下一步
- 第二章:表单和模板
- 2.1 简单示例:Poem Maker Pro
- 2.1.1 渲染模板
- 2.1.2 填充
- 2.2 模板语法
- 2.2.1 填充表达式
- 2.2.2 控制流语句
- 2.2.3 在模板中使用函数
- 2.3 复杂示例:The Alpha Munger
- 2.3.1 它如何工作
- 2.3.2 提供静态文件
- 2.3.2.1 设置静态路径
- 2.3.2.2 使用static_url生成静态URL
- 2.3.3 模板的下一步
- 第三章:模板扩展
- 3.1 块和替换
- 3.1.1 块基础
- 3.1.2 模板练习:Burt's Book
- 3.1.3 自动转义
- 3.2 UI模块
- 3.2.1 基础模块使用
- 3.2.2 模块深入
- 3.2.3 嵌入JavaScript和CSS
- 3.3 总结
- 第四章:数据库
- 4.1 使用PyMongo进行MongoDB基础操作
- 4.1.1 创建连接
- 4.1.2 处理文档
- 4.1.3 MongoDB文档和JSON
- 4.2 一个简单的持久化Web服务
- 4.2.1 只读字典
- 4.2.2 写字典
- 4.3 Burt's Books
- 4.3.1 读取书籍(从数据库)
- 4.3.2 编辑和添加书籍
- 4.3.2.1 渲染编辑表单
- 4.3.2.2 从数据库中取出书籍信息
- 4.3.2.3 保存到数据库中
- 4.4 MongoDB:下一步
- 第五章:异步Web服务
- 5.1 异步Web请求
- 5.1.1 从同步开始
- 5.1.2 阻塞的困扰
- 5.1.3 基础异步调用
- 5.1.4 异步装饰器和finish方法
- 5.1.5 异步生成器
- 5.1.6 异步操作总结
- 5.2 使用Tornado进行长轮询
- 5.2.1 长轮询的好处
- 5.2.2 示例:实时库存报告
- 5.2.3 长轮询的缺陷
- 5.3 Tornado与WebSockets
- 5.3.1 Tornado的WebSocket模块
- 5.3.2 示例:使用WebSockets的实时库存
- 5.3.3 WebSockets的未来
- 第六章:编写安全应用
- 6.1 Cookie漏洞
- 6.1.1 Cookie伪造
- 6.1.2 安全Cookies
- 6.1.2.1 使用安全Cookies
- 6.1.2.2 HTTP-Only和SSL Cookies
- 6.2 请求漏洞
- 6.2.1 剖析一个XSRF
- 6.2.2 防范请求伪造
- 6.2.3 使用Tornado的XSRF保护
- 6.2.3.1 XSRF令牌和AJAX请求
- 6.3 用户验证
- 6.3.1 示例:欢迎回来
- 6.3.2 authenticated装饰器
- 6.3.2.1 current_user属性
- 6.3.2.2 login_url设置
- 6.4 总结
- 第七章:外部服务认证
- 7.1 Tornado的auth模块
- 7.1.1 认证流程
- 7.1.2 异步请求
- 7.2 示例:登录Twitter
- 7.3 示例:Facebook认证和Graph API
- 第八章:部署Tornado
- 8.1 运行多个Tornado实例的原因
- 8.2 使用Nginx作为反向代理
- 8.2.1 Nginx基本配置
- 8.2.2 Nginx的SSL解密
- 8.3 使用Supervisor监控Tornado进程