flask实战-个人博客-虚拟环境、项目结构
个人博客
博客是典型的CMS(Content Management system,内容管理系统),通常由两部分组成:一部分是博客前台,用来展示开放给所有用户的博客内容;另一部分是博客后台,这部分内容仅开放给博客管理员,用来对博客资源进行添加、修改和删除等操作。
在这个项目,我们会学习更高级的项目组织方式。另外,我们还会学习使用扩展Flask-Login实现用户认证,这样就可以区分请求的来源客户端的身份,然后根据不同的身份返回不同的响应。
安装和激活虚拟环境
D:\flask\personalBlog>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是因为我们将使用蓝本来组织视图。蓝本提供了更强大的组织能力,使我们能够在程序功能层面模块化程序,而不仅仅是代码组织层面。下面会详细介绍蓝本的概念。
flask实战-个人博客-虚拟环境、项目结构的更多相关文章
- flask实战-个人博客-电子邮件支持
电子邮件支持 因为博客要支持评论,所以我们需要在文章有了新评论后发邮件通知管理员.而且,当管理员回复了读者的评论后,也需要发送邮件提醒读者. 为了方便读者使用示例程序,personalBlog中仍然使 ...
- flask实战-个人博客-模板 --
模板 personalBlog采用典型的博客布局,左侧三分之二为主体,显示文章列表.正文:右侧三分之一为边栏,显示分为类列表.社交链接等.现在的工作是将HTML文件加工为模板,并创建对应的表单类,在模 ...
- flask实战-个人博客-使用蓝本模块化程序
使用蓝本模块化程序 实例化flask提供的blueprint类就创建一个蓝本实例.像程序实例一样,我们可以为蓝本实例注册路由.错误处理函数.上下文处理函数,请求处理函数,甚至是单独的静态文件文件夹和模 ...
- 25、Flask实战第25天:项目结构搭建
创建一个虚拟环境bbs,并安装flask框架 #cmd进入DOS窗口 mkvirtualenv bbs pip install flask 在本地磁盘D新建项目目录:bbs 打开pycharm,创建f ...
- flask实战-个人博客-编写博客前台
编写博客前台 博客前台需要开放给所有用户,这里包括显示文章列表.博客信息.文章内容和评论等功能功能. 分页显示文章列表 为了在主页显示文章列表,我们要先在渲染主页模板的index视图的数据库中获取所有 ...
- flask实战-个人博客-数据库-生成虚拟数据 --
3.生成虚拟数据 为了方便编写程序前台和后台功能,我们在创建数据库模型后就编写生成虚拟数据的函数. 1)管理员 用于生成虚拟管理员信息的fake_admin()函数如下所示: personalBlog ...
- flask实战-个人博客-表单
表单 下面我们来编写所有表单类,personalBlog中主要包含下面这些表单: 登录表单: 文章表单: 评论表单: 博客设置表单: 这里仅介绍登录表单.文章表单.分类表单和评论表单,其他的表单在实现 ...
- flask实战-个人博客-程序骨架、创建数据库模型、临接列表关系 --
编写程序骨架 personalBlog的功能主要分为三部分:博客前台.用户认证.博客后台,其中包含的功能点如下图所示: 数据库 personalBlog一共需要使用四张表,分别存储管理员(Admin) ...
- flask实战-个人博客-使用类组织配置
使用类组织配置 在实际需求中,我们往往需要不同的配置组合.例如,开发用的配置,测试用的配置,生产环境用的配置.为了能方便地在这些配置中切换,你可以把配置文件升级为包,然后为这些使用场景分别创建不同的配 ...
随机推荐
- css 制作菜单
代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- 版本管理_svn_检出_更新_提交_本机 MAC 地址_冲突
版本管理 git svn [subversion] 实现集中式的版本控制工具软件 来源于最初的工程图纸. 需求: 备份还原 协同修改 权限控制 弊端:集中式(管理方便,但是如果中心服务器瘫痪,整个开发 ...
- (59)Wangdao.com第十天_JavaScript 对象在 栈和堆
对象的属性值 如果要使用特殊的属性名,需 对象["属性名"] = 属性值 // 存 对象["属性名"] // 取 obj["1 ...
- vue_v-for_遍历数组_遍历对象
1. v-for 遍历数组 html <div id="test"> <ul> <li v-for="(p, index) in perso ...
- Java课后作业之石家庄地铁系统PSP表格20190403
PSP2.1 Personal Software Process Stages Time Planning 计划 36 hours · Estimate · 估计这个任务需要多少时间 36 hours ...
- Linux命令行抓包及包解析工具tshark(wireshark)使用实例解析
在Linux下,当我们需要抓取网络数据包分析时,通常是使用tcpdump抓取网络raw数据包存到一个文件,然后下载到本地使用wireshark界面网络分析工具进行网络包分析. 最近才发现,原来wire ...
- apt-get安装mysql
1,检查是否已安装. 2,安装: apt-get install mysql-client-core-5.5 apt-get install mysql-server mysql-client 安装过 ...
- mysql主从服务搭建
一.安装mysql 检测当前centos是否安装了mysql:yum list installed | grep mysql yum list installed | grep mariadb ...
- js获取浏览器和设备的 width和height,
获取宽高参考: 方法: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.b ...
- webservice学习教程(一):理论
一. WebService到底是什么? webservice是一种跨平台,跨语言的规范,用于不同平台,不同语言开发的应用之间的交互 WebService是一个SOA(面向服务的编程)的架构,它是不依赖 ...