flask实战-个人博客-虚拟环境、项目结构 --

个人博客

博客是典型的CMS(Content Management system,内容管理系统),通常由两部分组成:一部分是博客前台,用来展示开放给所有用户的博客内容;另一部分是博客后台,这部分内容仅开放给博客管理员,用来对博客资源进行添加、修改和删除等操作。

在这个项目,我们会学习更高级的项目组织方式。另外,我们还会学习使用扩展Flask-Login实现用户认证,这样就可以区分请求的来源客户端的身份,然后根据不同的身份返回不同的响应。

安装和激活虚拟环境

D:flaskpersonalBlog>pipenv install --dev

这里用原作者的pipfile和pipfile.lock(放到项目根目录下),来安装虚拟环境的时候指定需要安装的第三方包及其版本

pipfile.lock是根据pipfile和当前环境自动生成的JSON格式的依赖文件

激活虚拟环境

大型项目结构

对于中小项目来说,使用程序包足以满足开发的需求。但如果项目更加复杂和庞大,我们就要学习一些进阶的项目组织技巧。在这一章,我们会学习用工厂函数和蓝本等技巧来进一步组织flask程序。

当某一个模块包含太多代码时,常见的做法是将单一模块升级为包,然后把原模块的内容分离成多个模块。在personalBlog程序中,视图模块views.py被转换成personalPrints子包,views.py的内容按照类别分离成auth.py、blog.py和admin.py三个模块。另外,模板文件夹内新创建了三个子文件夹:author、blog、admin,分别存放各自分类的模板。

personalBlog的程序包的主要文件结构如下所示:

personalblog/

       blueprints/

__init__.py

              blog.py

              auth.py

              admin.py

       templates/

              admin/

              auth/

              blog/

              base.html

              macros.html

static/

forms.py

models.py

emails.py  电子邮件

utils.py    辅助函数

fakes.py   虚拟数据

extensions.py  扩展

和messageBoard程序相比,personalBlog的程序包的根目录下新出现了4个脚本:

utils.py用来存储各种辅助函数(即utilities的简写),比如之前介绍的用于重定向回上一个页面的redirect_back()以及验证URL安全性的url_safe()。

fakes.py脚本存储虚拟数据生成函数。随着程序变大,我们需要生成大量不同种类的虚拟数据。比如,为了模拟一个虚拟博客,我们需要创建虚拟的博客信息、文章、分类和评论。使用函数可以更方便地组织这些虚拟数据生成代码,并且更易于重用。

emails.py用来存储发送电子邮件的函数。为了更方便使用,除了通用的发信函数,我们还会创建特定的发信函数。比如,用户发送新评论提醒的函数。

extensions.py用来存储扩展实例化等操作。

和大多数脚本一样,这些脚本的命名没有固定高要求,你可以自由修改。比如,utils.py也可以命名为helpers.py,fakes.py也可以命名为dummies.py或是vdatas.py。

一般来说,模块升级为包后的名称应该和模块名称相同。比如,如果表单类太多,我们会创建一个forms子包,然后在子包内创建auth.py、admin.py和blog.py模块组织代码。有一处你可能会感到奇怪,我们这里把views.py升级后的包命名为blueprints(蓝本)。事实上,你当然也可以命名为views,使用blueprints是因为我们将使用蓝本来组织视图。蓝本提供了更强大的组织能力,使我们能够在程序功能层面模块化程序,而不仅仅是代码组织层面。下面会详细介绍蓝本的概念。

原文地址:https://www.cnblogs.com/xiaxiaoxu/p/10787408.html