Flask探索:前言

这本书是使用 Flask 的最佳实践的合集。有许多 Flask 应用程序常见的代码片段。例如,你会经常需要与数据库交互和用户身份验证。在接下来的章节里我将尽我所能来解释做这样的事情的“正确的方式”。我的建议并不总是适用的,但是我希望大部分时候它们是一个很好的选择。

假设¶

为了给你们呈现更加具体的建议,我写这本书有几个基本的假设。当你阅读和运用这些建议到你自己的项目中的时候要牢记这一点。

读者¶

这本书的内容是基于官方文档中的信息。我强烈地建议你们浏览 用户指南 并且依照 官方教程官方教程中文翻译 )。这会给你一个机会去熟悉 Flask 的术语。你应该会明白什么是视图,Jinja 模板基础知识以及其它一些为初学者定义的基本概念。我试图避免与用户指南已有的信息重叠,因此如果你第一次阅读本书的话,你可能会有些迷失。

除了上面所说,在这本书中的其它主题并不是非常高级的。我们的目标就是要强调使得开发变得更加容易地最佳实践和模式。尽管我试图避免与官方文档有太多重叠,你可能会发现我会重申某些概念以确保你们对它熟悉。当你们阅读这些的时候不必打开初学者教程。

版本¶

Python 2 VS Python 3

我写这本书的时候,Python 社区正处于 Python 2 到 Python 3 的过渡之中。Python 软件基金会的官方立场如下:

Python 2.x 维持现状,Python 3.x 是语言的现在和未来。[1]

随着版本 0.10 发布,Flask 可以运行在 Python 3.3 上。当我询问 Armin Ronacher 有关新的 Flask 应用程序能否开始使用 Python 3,他说他还没有推荐人去使用。

目前我自己没有使用 Python 3,我永远不要向人们推荐我自己都不相信的东西,因此我很谨慎地推荐使用 Python 3。

—Armin Ronacher,Flask 创始人 [2]

就 Python 3 持观望态度的原因之一是许多常见的依赖库还没有被移植到 Python 3 上。你不想要在使用 Python 3 构建一个项目几个月后才意识到你不能使用包 X,Y 以及 Z。可能最终 Flask 将正式推荐用 Python 3 开发新项目,但是现在所有一切都是关于 Python 2。

Note

Python 3 Wall of Superpowers 记录着那些已经迁移到 Python 3 的主要 Python 库。

因为本书目的是提供实用的建议,我认为很有意义基于 Python 2 来编写应用。特别地,我将会使用 Python 2.7 来完成本书的代码。未来可能会随着 Flask 社区的演变进行更新,但是目前我们坚持使用 Python 2.7。

Flask 版本 0.10

在编写这本书的时候,0.10 是 Flask 的最新版本(准确的是 0.10.1)。本书大部分的内容是不会随着 Flask 较小的更新发生变化,但这是要记住的东西。

动态文件¶

本书的内容会动态地更新,而不是定期发布更新。这也是把书籍免费公开的好处之一。网站是比印刷或者甚至 PDFs 更加流畅的发布途径。

这本书的源文件托管在 on GitHub,贡献和主意随时欢迎!

本书使用的约定¶

每一章节是独立的¶

本书的每一章都是独立的课程。许多的书籍以及教程都是写成一个很长的课程。通常这就意味着一个示例程序或者应用被创建以及更新,这些示例或者应用贯穿全书为了解释概念和课程。相反,本书每个章节都有不同的示例来解释概念,但是来自不同章节的示例并没有打算组合成一个大的项目。

格式化¶

脚注将用于引用,这样你就不会认为我说假话。 [3]

斜体文本 将被用于表示一个文件名。

粗体文本 将用于表示一个新的或者重要的名词。

Warning

可能会导致重大问题的常见陷阱将会以警告框的形式显示。

Note

补充信息将会以注解框形式出现。

彩蛋¶

来自 Kickstarter 活动中 6 位支持者的姓名被编码并且分散在书中。如果你发现所有 6 个姓名的话,邮件发送它们所在的位置给我,我会给你一个小小的奖励。没有提示。

摘要¶

  • 这本书包含了使用 Flask 的建议。
  • 我假设你们已经浏览了 Flask 官方教程。
  • 我假设你们正在使用 Python 2.7。
  • 我假设你们正在使用 Flask 0.10。
  • 我会尽我所能及时地更新书的内容。
  • 本书的每一章节都是独立的。
  • 有几种我使用来表达内容的附加信息的格式。
  • 摘要将会以列表形式出现在每一章节的结尾。
[1] 来源:The Python wiki
[2] 来源:My conversation with Armin Ronacher
[3] 看,它们 一定 是真的!