今日好书丨《深入理解 Flask》

Posted 博文视点Broadview

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了今日好书丨《深入理解 Flask》相关的知识,希望对你有一定的参考价值。

今日好书丨《深入理解 Flask》

《深入理解 Flask》

Python主流Web开发框架 全流程实战 

全面覆盖重要技术话题

【美】Jack Stouffer 著 

苏丹 译

2016年7月出版

今日好书丨《深入理解 Flask》 

小编推荐: Flask 是一种具有平缓学习曲线和庞大社区支持的微框架,利用它可以构建大规模的web应用。学习上手Flask非常轻松,但要深入理解却并不容易。本书从一个简单的Flask应用开始,通过解决若干实战中的问题,对一系列进阶的话题进行了探讨。本书还会讨论可用于部署Flask应用的诸多不同平台,以及你必须考虑的——每个平台的优劣利弊。

  • 下方评论区留下对此书的想法,获赞最多的同学将获赠此书,8月5日公布获奖用户。

内容提要

Flask 是在Python 用户中最为流行的Web 开发框架。《深入理解 Flask》从一个简单的Flask 项目入手,由浅入深地探讨了一系列实战问题,包括如何使用SQLAlchemy 和Jinja 等工具进行Web 开发;如何正确地设计扩展性强的Flask 应用架构和搭建MVC 环境;对于各种NoSQL 数据库的特性,何时应该、何时不应该及如何使用它们;通过使用Flask 扩展快速实现用户的身份系统、RESTful API、NoSQL查询、后台管理等功能;如何创建自己的扩展;使用Celery 编写异步任务,使用pytest 进行单元测试等;最后介绍了如何部署上线,包括使用自己搭建的服务器或使用各种云服务,以及如何权衡和选择这些不同的解决方案。


作译者简介

Jack Stouffer 是一名有数年Web 应用开发经验的程序员。他在两年前将自己所有的项目都切换到了Flask,目前在位于密歇根州奥本山的Apollo America 工作,使用Python、Flask 和javascript 编写企业内部的业务工具。Jack 是开源技术的信徒与支持者,他在GitHub 上发布以他所推荐的最佳实践原则编写的Flask 范例时,该范例立即成为线上最受欢迎的Flask 代码库。Jack 还曾经担任由Packt Publishing 出版的Flask FrameworkCookbook 一书的审稿人。

译者:苏丹,来自山城重庆,毕业于北京师范大学;现豆瓣资深开发工程师,主要开发作品有豆瓣FM等;有多年Python编程实践经验;曾参与《Learning android中文版》一书翻译。 Jack Stouffer是一位有数年web应用开发经验的程序员。他在两年前将他所有的项目都切换到了Flask。他目前在位于密歇根州奥本山的Apollo America工作,使用Python、Flask和JavaScript编写企业内部业务工具。Jack是开源技术的信徒与支持者,在GitHub上发布以他所推荐的zui佳实践原则编写的Flask范例时,立即成为了线上受欢迎的Flask代码库。Jack还曾经担任Packt Publishing的《Flask Framework Cookbook》一书的审稿人。


前  言

Flask 是一个基于Python 的Web 框架,它的设计目的是提供Web 开发所需要的最小功能子集。Flask 与别的框架(尤其是采用其他编程语言的框架)的不同之处在于:它没有绑定诸如数据库查询或者表单处理等功能库,以及它们所组成的整个生态系统。它倾向于对这些功能的实现方式不做任何限定。

这种系统带来的主要好处是:开发者能够使用他们想用的任何方式和工具,去设计他们的应用架构。另外,对于一些常见的通用功能,Flask 没有以某种特定方式去实现,这意味着在Flask 中,对标准库的使用会比在其他框架里多得多,这保证了通用功能的稳定性及针对其他Python 程序员的可读性。由于Flask 社区十分庞大,所以该社区提供的添加通用功能的方式非常多。本书的重点之一,就是介绍扩展Flask 的方法,了解它们如何帮助我们避免重复造轮子。这些扩展的妙处在于,如果不需要那些额外的功能,就不用引入它们,这样我们的应用才会保持简洁、轻量。

这种系统的主要弊端是,大部分新的Flask 用户不知道如何正确地规划大型应用的结构,最后弄出一大堆让人难以理解和维护的代码。所以本书的另一个重点是如何为Flask 应用创建模型/视图/控制器(MVC)架构。

MVC 体系在最初被发明时,主要用来设计桌面应用的用户界面。它将数据处理(model)、交互逻辑(controller)和用户界面(view)隔离成三层不同的组件。

这三层组件的隔离,使得程序员不用为每个网页重新实现一遍相同的功能,而是只要重用那些代码。比如,若是没有把处理数据的代码拆分到单独的函数中,那么我们不得不在每个页面的渲染函数里,把同样的数据库连接代码和SQL 查询代码都写一遍。

本书中大量的调查研究资料及Web 应用开发中各种踩坑的第1 手痛苦经验,使得本书成为目前关于Flask 的最详尽、实用的资料。真诚地希望你会喜欢它。

本书涵盖的内容

第1 章,入门,帮助读者应用Python 项目的最佳实践方式,并搭建一个Flask 开发环境。读者会得到一个十分基础的Flask 应用框架,在整本书中都会用到。

第 2 章,使用SQLAlchemy 创建数据模型,介绍如何把Python 的数据库工具SQLAlchemy与Flask 结合起来使用,为用户的数据库建立一套面向对象的编程接口。

第 3 章,通过模板创建视图,讲解如何使用Flask 的模板系统Jinja,在SQLAlchemy模型的支持下动态地创建html 页面。

第 4 章,使用蓝图创建控制器,介绍如何使用Flask 的蓝图(blueprint)功能来组织视图,同时避免代码冗余。

第 5 章,进阶的应用结构,结合在以上4 章中学到的知识,详细讲解应该如何组织代码,以创建可维护性和可测试性都更好的应用结构。

第 6 章,保护应用安全,讲解如何使用各种Flask 扩展,为每个视图添加基于权限的登录系统。

第 7 章,在Flask 中使用NoSQL 数据库,讲解什么是NoSQL 数据库,以及在应用需要更强大的功能时,应该怎样将NoSQL 数据库与之整合。

第 8 章,构建RESTful API,介绍如何通过一种安全和易用的方式,把应用数据库中的数据提供给第三方使用。

第 9 章,使用Celery 创建异步任务,讲解如何把成本高或耗时长的任务挪到后台执行,让它们不拖慢应用。

第 10 章,有用的Flask 扩展,讲解如何利用一些广受欢迎的扩展,让应用跑得更快、增加更多的功能,以及让调试变得方便、易行。

第 11 章,构建你自己的扩展,了解Flask 扩展是如何工作的,以及怎样编写扩展。

第12 章,测试Flask 应用,讲解如何通过在应用中增加单元测试和用户界面测试,以保障程序质量,减少错误代码的数量。

第 13 章,部署Flask 应用,介绍如何把已经完成的应用从开发环境中拿出来,部署到线上服务器中。

阅读本书前需要做的准备

阅读本书前,我们只需准备自己喜欢的一个文本编辑器和一个网页浏览器。另外,需要在机器上安装Python。

Windows、Mac OS X 和Linux 用户都可以很容易地学习本书的内容。

本书的目标读者

本书是为那些对Flask 有一些了解,但希望把对Flask 的理解程度从略懂提升到精通的Web 开发者所准备的。


本书目录

第1 章入门  1

使用 Git 进行版本控制 1

安装Git  1

Git 基础 2

使用pip 管理Python 包 4

在Windows 上安装pip  4

在Mac OS X 和Linux 上安装Python 包管理器pip 5

pip 基本操作 6

用virtualenv 的沙盒管理依赖 7

virtualenv 基础 7

开始我们的项目 8

使用Flask Script  9

总结 10

第2 章使用 SQLAlchemy 创建数据模型11

设置 SQLAlchemy11

Python 安装包 12

Flask SQLAlchemy 12

我们的第1 个数据模型 13

创建user 表 15

CRUD 16

新增数据 16

读取数据 16

修改数据 19

删除数据 19

数据模型之间的关联 20

一对多 20

多对多 23

SQLAlchemy 会话对象的方便之处 25

使用Alembic 进行数据库迁移 26

总结 28

第3 章通过模板创建视图  29

Jinja 的语法 29

过滤器 30

注释 34

if 语句 34

循环 35

宏 36

Flask 特有的变量和函数 37

创建视图 38

视图函数 38

编写和继承模板 41

Flask WTForms 45

WTForms 基础 46

自定义检验器 48

发布评论 48

总结 51

第4 章使用蓝图创建控制器  52

请求的构建和销毁,以及全局变量 52

错误页面 53

使用类描述视图 53

方法视图 55

蓝图 55

总结 57

第5 章进阶的应用结构 58

模块项目 58

重构代码 59

应用的工厂模式 62

总结 64

第6 章保护应用安全  65

准备工作 65

修改用户模型 65

创建表单 67

创建视图 71

社交网络登录 76

使用会话 84

使用Flask Login  87

用户角色 90

总结 95

第7 章在 Flask 中使用NoSQL 数据库 96

NoSQL 数据库的种类 96

键值数据库 97

文档数据库 97

列式数据库 98

基于图的数据库 100

关系型数据库与NoSQL 的比较 101

关系型数据库的优势 102

NoSQL 数据库的优势 103

在什么情况下用什么数据库 104

在Flask 中使用MongoDB 105

安装MongoDB  106

配置MongoEngine 106

定义文档 107

CRUD  112

NoSQL 中的关联关系 117

利用NoSQL 的强大能力 120

总结 126

第8 章构建 RESTful API 127

REST 是什么 127

构建RESTful Flask API 130

GET 请求 131

格式化输出 132

请求中的参数 135

POST 请求 138

身份认证 140

PUT 请求 143

DELETE 请求 146

总结 147

第9 章使用 Celery 编写异步任务 148

Celery 是什么 148

配置Celery 和RabbitMQ 150

在Celery 中创建任务 151

运行Celery 任务 154

Celery 工作流 155

监控Celery  160

在Flower 中通过网页进行监控 161

创建一个提醒应用 161

生成每周摘要 163

总结 167

第10 章有用的 Flask 扩展 168

Flask Script  168

Flask Debug Toolbar  170

Flask Cache  173

缓存函数和视图 174

缓存带参数的函数 175

缓存带有查询参数的路径 177

使用Redis 作为缓存后端 177

使用memcached 作为缓存后端 178

Flask Assets 178

Flask Admin  181

编写基础管理页面 182

编写数据库管理页面 184

增强文章管理功能 185

编写文件系统管理页面 187

保护Flask Admin 的安全 188

Flask Mail 189

总结 190

第11 章构建你自己的扩展 192

编写一个 YouTube Flask 扩展 192

创建Python 包 196

通过Flask 扩展修改响应数据 198

总结 200

第12 章测试 Flask 应用 201

什么是单元测试 201

怎样进行测试 202

对应用进行单元测试 202

测试路由函数 203

用户界面测试 208

测试覆盖率 213

测试驱动的开发 216

总结 218

第13 章部署 Flask 应用 219

部署在你自己的服务器上 219

使用fabric 把代码推送到服务器 220

使用supervisor 运行你的Web 服务器 222

Gevent 224

Tornado  225

nginx 和uWSGI  226

Apache 和uWSGI 229

部署在Heroku 上 230

使用Heroku Postgres 231

在Heroku 中使用Celery 232

在AWS 上部署应用 233

在Amazon Elastic Beanstalk 上使用Flask 233

使用Amazon Relational Database Service  235

在Amazon Simple Queue Service 中使用Celery 236

总结 237

今日好书丨《深入理解 Flask》

 

博文视点

您阅读的专业智库

了解更多本书详情请点击阅读原文

长按二维码轻松关注


以上是关于今日好书丨《深入理解 Flask》的主要内容,如果未能解决你的问题,请参考以下文章

今日好书丨《Laravel框架关键技术解析》

好书推荐—–深入理解Java虚拟机

今日好书丨《跟老齐学Python:Django实战》

今日好书丨Python高效开发实战——DjangoTornadoFlaskTwisted

深入理解Flask_(美)Jack Stouffer著 PDF

C语言丨深入理解volatile关键字