logo资料库

Flask官方文档中文版.pdf

第1页 / 共257页
第2页 / 共257页
第3页 / 共257页
第4页 / 共257页
第5页 / 共257页
第6页 / 共257页
第7页 / 共257页
第8页 / 共257页
资料共257页,剩余部分请下载后查看
导读
引子
1、欢迎使用 Flask
2、前言
2.1“微” 是什么意思?
2.2配置与惯例
2.3与 Flask 共成长
3、给有经验程序员的前言
3.1Flask 中的线程局部变量
3.2Web 开发危机四伏
3.3Python 3 的状态
一、安装
1.1 virtualenv
1.2全局安装
1.3活在边缘
1.4Windows 下的 pip 和 distribute
二、快速入门
2.1一个最小的应用
2.2调试模式
2.3路由
2.3.1变量规则
2.3.2构造 URL
2.3.3HTTP 方法
2.4静态文件
2.5模板渲染
2.6访问请求数据
2.6.1环境局部变量
2.6.2请求对象
2.6.3文件上传
2.6.4Cookies
2.7重定向和错误
2.8关于响应
2.9会话
2.10消息闪现
2.11日志记录
2.12整合 WSGI 中间件
2.13部署到 Web 服务器
三、教程
3.1介绍 Flaskr
3.2步骤 0: 创建文件夹
3.3步骤 1: 数据库模式
3.4步骤 2: 应用设置代码
3.5步骤 3: 数据库连接
3.6步骤 4: 创建数据库
3.7步骤 5: 视图函数
3.7.1显示条目
3.7.2添加条目
3.7.3登入和登出
3.8步骤 6: 模板
3.8.1layout.html
3.8.2show_entries.html
3.8.3login.html
3.9步骤 7: 添加样式
3.10福利: 应用测试
四、模板
4.1Jinja 配置
4.2标准上下文
4.3标准过滤器
4.4控制自动转义
4.5注册过滤器
4.6上下文处理器
五、测试 Flask 应用
5.1应用程序
5.2测试的大框架
5.3第一个测试
5.4登陆和登出
5.5测试消息的添加
5.6其他测试技巧
5.7伪造资源和上下文
5.8保存上下文
5.9访问和修改 Sessions
六、记录应用错误
6.1错误邮件
6.2记录到文件
6.3控制日志格式
6.3.1邮件
6.3.2日志文件
6.3.3复杂日志格式
6.4其它的库
七、调试应用错误
7.1有疑问时,手动运行
7.2调试器操作
八、配置处理
8.1配置基础
8.2内置的配置值
8.3从文件配置
8.4配置的最佳实践
8.5开发 / 生产
8.6实例文件夹
九、信号
9.1订阅信号
9.2创建信号
9.3发送信号
9.4信号与 Flask 的请求上下文
9.5基于装饰器的信号订阅
9.6核心信号
十、即插视图
10.1基本原则
10.2方法提示
10.3基于调度的方法
10.4装饰视图
10.5用于 API 的方法视图
十一、应用上下文
11.1应用上下文的作用
11.2创建应用上下文
11.3应用上下文局部变量
11.4上下文用法
十二、请求上下文
12.1深入上下文作用域
12.2上下文如何工作
12.3回调和错误
12.4销毁回调
12.5留意代理
12.6错误时的上下文保护
十三、用蓝图实现模块化的应用
13.1为什么使用蓝图?
13.2蓝图的设想
13.3我的第一个蓝图
13.4注册蓝图
13.5蓝图资源
13.5.1蓝图资源文件夹
13.5.2静态文件
13.5.3模板
13.6构造 URL
十四、Flask 扩展
14.1寻找扩展
14.2使用扩展
14.3Flask 0.8 以前
十五、与 Shell 共舞
15.1创建一个请求上下文
15.2激发请求发送前后的调用
15.3进一步提升 Shell 使用体验
十六、Flask 代码模式
16.1大型应用
16.1.1简单的包
16.1.2与蓝图一起工作
16.2应用程序的工厂函数
16.2.1基础的工厂函数
16.2.2使用应用程序
16.2.3工厂函数的改进
16.3应用调度
16.3.1如何使用此文档
16.3.2合并应用
16.3.3通过子域名调度
16.3.4使用路径来调度
16.4使用 URL 处理器
16.4.1国际化的应用程序 URL
16.4.2多国语言化的 Blueprint URL
16.5部署和分发
16.5.1基础的安装脚本
16.5.2分发代码
16.5.3声明依赖关系
16.5.4安装 / 开发
16.6使用 Fabric 部署
16.6.1创建第一个 Fabfile
16.6.2运行 Fabfile
16.6.3WSGI 文件
16.6.4配置文件
16.6.5第一次部署
16.6.6下一步操作
16.7在 Flask 中使用 SQLite 3
16.7.1按需连接
16.7.2简化查询
16.7.3初始化数据库模型
16.8在 Flask 中使用 SQLAlchemy
16.8.1Flask-SQLAlchemy 扩展
16.8.2显式调用
16.8.3手动实现 ORM
16.8.4SQL 抽象层
16.9上传文件
16.9.1一点点介绍
16.9.2改进上传功能
16.9.3上传进度条
16.9.4更简单解决方案
16.10缓存
16.10.1配置缓存
16.10.2使用缓存
16.11视图装饰器
16.11.1过滤未登录用户的装饰器
16.11.2缓存装饰器
16.11.3模板装饰器
16.11.4终端装饰器
16.12使用 WTForms 进行表单验证
16.12.1表单
16.12.2在视图里
16.12.3在模板中使用表单
16.13模板继承
16.13.1基础模板
16.13.2子模板
16.14消息闪现
16.14.1简单的闪现
16.14.2分类闪现
16.14.3过滤闪现消息
16.15用 jQuery 实现 Ajax
16.15.1加载 jQuery
16.15.2我的站点在哪?
16.15.3JSON 视图函数
16.15.4HTML 部分
16.16自定义错误页面
16.16.1通常的错误代码
16.16.2错误处理器
16.17延迟加载视图
16.17.1转换到中央 URL 映射
16.17.2延迟加载
16.18在 Flask 中使用 MongoKit
16.18.1显式调用
16.18.2PyMongo 兼容层
16.19在 Flask 中使用 MongoKit
16.19.1显式调用
16.19.2PyMongo 兼容层
16.20添加 Favicon
16.20.1参考
16.21数据流
16.21.1基本使用
16.21.2在模板中生成流
16.22延迟请求回调
16.22.1装饰器
16.22.2调用延迟函数
16.22.3一个实际应用的例子
16.23添加 HTTP Method Overrides
16.24请求内容校验码
16.25基于 Celery 的后台任务
16.25.1安装 Celery
16.25.2配置 Celery
16.25.3最简示例
16.25.4运行 Celery 职程
十七、部署选择
17.1mod_wsgi (Apache)
17.1.1安装 mod_wsgi
17.1.2创建一个 .wsgi 文件
17.1.3配置 Apache
17.1.4故障排除
17.1.5自动重加载支持
17.1.6使用虚拟环境
17.2独立 WSGI 容器
17.2.1Gunicorn
17.2.2Tornado
17.2.3Gevent
17.2.4代理设置
17.3uWSGI
17.3.1用 uwsgi 启动你的应用
17.3.2配置 nginx
17.4FastCGI
17.4.1创建一个 .fcgi 文件
17.4.2配置 lighttpd
17.4.3配置 nginx
17.4.4运行 FastCGI 进程
17.4.5调试
17.5CGI
17.5.1创建一个 .cgi 文件
17.5.2服务器配置
十八、聚沙成塔
18.1阅读源码
18.2钩子,继承
18.3继承
18.4用中间件包装
18.5分支
18.6像专家一样扩大规模
18.7与社区对话
汇智网 Hubwiz.com Flask 官方文档中文版 导读 本电子书为 Flask 官方文档的中文译本,最早由网友亦念、云尔和 atupal 发布于网络,由汇智网编目整理,是网上流传最广的 Flask 文档之一。 毫无疑问,对于开发者而言,官方文档是最权威的文档,但往往也最枯燥 的,从官方文档开始使开发者的学习效率大打折扣。为了弥补这一遗憾, 汇智网推出了适合初学者快速上手的在线互动式 Flask 开发课程,课程创 作团队在深入研读 Flask 源码的基础上,引导学习者循序渐进地理解 Flask 中的诸多知识难点。读者可以通过以下链接访问《深入浅出 Flask》在线 教程:http://xc.hubwiz.com/course/562427361bc20c980538e26f?affid=flaskom7878 教程预置了开发环境。进入教程后,可以在每一个知识点立刻进行同步实 践,而不必在开发环境的搭建上浪费时间: 1 / 257
汇智网 Hubwiz.com Flask 官方文档中文版 汇智网带来的是一种全新的交互式学习方式,可以极大提高学习编程的效 率和学习效果: 汇智网课程内容已经覆盖以下的编程技术: Node.js、MongoDB、JavaScript、C、C#、PHP、Python、Angularjs、Ionic、React、UML、redis、 mySQL、Nginx、CSS、HTML、Flask、Gulp、Mocha、Git、Meteor、Canvas、zebra、Typescript、 Material Design Lite、ECMAScript、Elasticsearch、Mongoose、jQuery、d3.js、django、cheerio、 SVG、phoneGap、Bootstrap、jQueryMobile、Saas、YAML、Vue.js、webpack、Firebird,jQuery EasyUI,ruby,asp.net,c++,Express ,Spark...... 2 / 257
汇智网 Hubwiz.com Flask 官方文档中文版 引子 1、欢迎使用 Flask 欢迎阅读 Flask 文档。 本文档分为几个部分。我推荐您先从安装 开始, 之后再浏览 快速入门 章节。 教程 比快速入门更详细地介绍了如何用 Flask 创建一个完整的应用(虽然很小)。 想要深入了解 Flask 内部细 节,请查阅 API 文档。Flask 代码模式 章节介绍了一些常见模式。 Flask 依赖两个外部库: Jinja2 模板引擎和 Werkzeug WSGI 工具集。此 文档不包含这两个库的文档。要细读它们的文档,请点击下面的链接:  Jinja2 文档  Werkzeug 文档 3 / 257
汇智网 Hubwiz.com Flask 官方文档中文版 2、前言 请在使用 Flask 前阅读。希望本文能回答你一些关于 Flask 的用途和目 标以及 Flask 适用情境的问题。 2.1“微” 是什么意思? “微”(micro) 并不表示你需要把整个 Web 应用塞进单个 Python 文件 (虽然确实可以 ),也不意味着 Flask 在功能上有所欠缺。微框架中的“微” 意味着 Flask 旨在保持核心简单而易于扩展。Flask 不会替你做出太多决 策——比如使用何种数据库。而那些 Flask 所选择的——比如使用何种模 板引擎——则很容易替换。除此之外的一切都由可由你掌握。如此,Flask 可以与您珠联璧合。 默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有 多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能, 如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、 上传处理、各种各样的开放认证技术等功能。Flask 也许是“微小”的,但 它已准备好在需求繁杂的生产环境中投入使用。 2.2 配置与惯例 Flask 繁多的配置选项在初始状况下都有一个明智的默认值,并会遵循一 些惯例。 例如,按照惯例,模板和静态文件分别存储在应用 Python 源 4 / 257
汇智网 Hubwiz.com Flask 官方文档中文版 代码树下的子目录 templates 和 static 里。虽然这个配置可以修改,但你 通常不必这么做, 尤其是在刚开始的时候。 2.3 与 Flask 共成长 当你配置好并运行 Flask,你会发现社区中有许多可以集成到生产环境项 目的扩展。Flask 核心团队会审阅这些扩展,确保经过检验的扩展在未来 版本中仍能适用。 随着你的代码库逐渐壮大,你仍可自由把握项目的设计决策。Flask 会继 续尽可能提供的一个非常简单的胶水层,这也是 Python 应该提供的东西。 你可以在 SQLAlchemy 或其它数据库工具中实现更高级的模式,酌情引 入非关系型数据持久化, 也可以从框架无关的 WSGI——Python 的 Web 接口——工具中获益。 Flask 里有许多钩子用于定制行为。若是需要深层次的定制,可以直接继 承 Flask 类。 如果你对此有兴趣,请阅读 聚沙成塔 章节。如果你好奇 Flask 的设计原则,请查阅 Flask 中的设计决策 章节。 5 / 257
汇智网 Hubwiz.com Flask 官方文档中文版 3、给有经验程序员的前言 3.1Flask 中的线程局部变量 Flask 的设计抉择之一就是让简单的任务保持简单;它们的实现不应采用 大量的代码, 并且不应对你做出限制。为此,我们选择了一些可能让某 些人觉得惊讶或异端的设计。例如,Flask 内部使用线程局部的对象,这 样你不必在请求内的函数间传递对象来保证线程安全。这个方法很方便, 但为了实现依赖注入,或尝试重用含有与请求挂钩的值的代码之时,需要 一个有效的请求环境(Request Context)。 3.2Web 开发危机四伏 快乐码 Web,安全记心间。 你相当可能编写允许用户在你的服务器上注册并留下数据的 Web 应用。 即便你是这唯一的用户,也会在应用中留下数据。用户们把数据托付给你, 你当然更希望这些数据被妥善安全地保存。 不幸的是,攻陷 Web 应用的手段五花八门。Flask 可保护你免受一个在 现代 Web 应用中最常见的安全问题的困扰:跨站脚本攻击(XSS)。Flask 和底层的 Jinja2 模板引擎已经为你应付得足够好,除非你蓄意把不安全 的 HTML 标记为安全。但仍有很多导致安全问题的可能。 本文档会在 Web 开发中那些需要注意安全的方面警示你。一些安全上的 顾虑远比人们想象的复杂,我们所有人都会有低估漏洞被利用的可能性的 6 / 257
汇智网 Hubwiz.com Flask 官方文档中文版 时候——直到一个精明的攻击者找出利用我们程序的方法。而且,不要侥 幸认为你的应用没有重要到足够吸引攻击者。取决于攻击的类型,有时候 会是自动化的僵尸机器来检测如何在你数据库中填充垃圾内容、恶意程序 链接或之类东西。 开发者必须在为需求编写代码时留心安全隐患,在这点上,Flask 与其它 框架没有区别。 3.3Python 3 的状态 Python 社区目前处于改善库对 Python 新版本支持的进程中。而当前大 力改进中的处境仍有一些问题,使得用户难以迁移到 Python 3 。这些问 题一部分是因为长时间没有回顾语言中的变化,一部分也是因为我们没有 找出低层 API 应该如何做出修改来适应 Python 3 中 Unicode 的变化。 我们强烈建议在开发时使用 Python 2.6 和 2.7 ,并激活 Python 3 警告。 如果你计划在近期升级到 Python 3 ,我们强烈推荐你阅读 如何编写向后 兼容的 Python 代码 。 继续阅读 安装 或 快速入门 。 7 / 257
汇智网 Hubwiz.com Flask 官方文档中文版 一、安装 Flask 依赖两个外部库:Werkzeug 和 Jinja2 。 Werkzeug 是一个 WSGI (在 Web 应用和多种服务器之间的标准 Python 接口) 工具集。Jinja2 负责渲染模板。 那么如何在你的电脑上安装这一切?虽说条条大道通罗马,但是最强大的 方式是 virtualenv ,所以我们首先来看它。 你首先需要 Python 2.6 或更高的版本,所以请确认有一个最新的 Python 2.x 安装。 在 Python 3 中使用 Flask 请参考: Python 3 支持 。 1.1 virtualenv 你很可能想在开发中用上 virtualenv,如果你有生产环境的 shell 权限, 你同样会乐于在生产环境中使用它。 virtualenv 解决了什么问题?如果你像我一样喜欢 Python,不仅会在采 用 Flask 的 Web 应用中用上 virtualenv,在别的项目中你也会想用上它。 你拥有的项目越多,同时使用不同版本的 Python 工作的可能性也就越大, 或者起码需要不同版本的 Python 库。悲惨现实是:常常会有库破坏向后 兼容性,然而正经应用不采用外部库的可能微乎其微。当在你的项目中, 出现两个或更多依赖性冲突时,你会怎么做? 8 / 257
分享到:
收藏