组织你的项目
Flask 把你的应用程序的组织交由你来决定。这是我喜欢把 Flask 推荐给初学者的原因之一,但是它确实意味着你必须花一些心思在组织你的代码上。你可以把你的整个应用程序放在一个文件中,或者让它们分布在多个包里。这里有一些你可以遵循的组织模式,它会让开发和部署更加容易。
让我们定义一些术语,我们会在本章的后面碰到它们。
仓库/版本库 - 这是你的应用程序所在的基础文件夹。这个术语习惯上是指版本控制系统,这是你应该使用的。当我在本章提及到它的时候,我是指你的项目的根目录。当致力工作于应用程序上的时候,你可能离不开这个目录。
包 - 这是指包含你的应用代码的一个 Python 包。我会在这一章中更多地讨论创建你的应用作为一个包,但现在只需知道包是仓库/版本库的子目录。
Note
- 在 中可以阅读更多关于 Python 模块的内容。也可以阅读 Python 教程的中文翻译。
在很多 Flask 示例中你都会遇到所有的代码都放置于一个文件中,通常叫做 app.py。这对于快速项目(像官方教程中的那个)是不错的,你只需要满足几个路由并且编写不到百行的应用程序的代码。
### 包 当你正在做一个稍微有些复杂的项目的时候,一个模块会显得有些混乱。你将需要为模型和表单定义类,并且它们也会引入到你的路由和配置的代码中。 所有这一切都可以妨碍开发工作。为了解决这个问题,我们可以把应用程序中不同的组件分解成有联系的模块 — 一个包。
- config.py
- requirements.txt
- run.py
- instance/
- config.py
- yourapp/
- views.py
- models.py
- forms.py
- static/
- templates/
上面展示的结构可以让你以一种合乎逻辑的方式把你的应用中不同的组件进行分组。模型的定义类一起放入 models.py,路由的定义放在 views.py 以及表单定义在 forms.py (我们后面有整个一章节是关于表单的内容)。
这张表格提供了包结构的基本纲要,你会发现大部分的 Flask 都能适用。可能最终会有其它一些文件在你的仓库/版本库里,但是这些是大多数 Flask 应用程序最常见的。
在某些时候你可能发现你有许多相关的路由。如果你像我一样,你首先会想到把 views.py 分离到一个包并且把这些视图分组到模块。当你意识到这一点的时候,是时候把你的应用分解成蓝图。
蓝图本质上就是以某种独立的方式定义的应用程序的组件。它们在你的应用程序中扮演了应用。你可能针对管理面板,前端以及用户控制面板有着不同的蓝图。这会让你依据组件分组视图,静态文件以及模板,同时会让你在这些组件之间共享你的应用程序的模型,表单以及其它方面。我们将会在后面讨论如何使用蓝图组织你的应用程序。
摘要
- 为你的应用程序使用单一模块是有益于快速项目。
- 蓝图是组织含有几个明显区别的组件的项目的一个很好的方式。