项目结构二三事

简介: 之前我们只用一个hello.py就能完成了flask创建一个简单的web应用,首先让我们看下之前文件组织形式。简单项目结构在mysite文件下有3个顶层文件:migration负责数据库迁移;static存放静态文件如css,js,images等;templates存放网页。

之前我们只用一个hello.py就能完成了flask创建一个简单的web应用,首先让我们看下之前文件组织形式。


img_8a914f9c79acd7c9b4440748ed784b0d.png
简单项目结构

在mysite文件下有3个顶层文件:migration负责数据库迁移;static存放静态文件如css,js,images等;templates存放网页。hello.py负责启动应用,data.sqlite存放数据。
看起来不错,如果我希望为这个WEB增加多一些应用(app)呢,hello.py是不是会越来越大呢?会不会越来越难以管理呢?那么目前的结构就需要升级了,好让hello.py瘦身。

img_01ed746f8da86ff5b38f1e0a000d96c1.png
新的项目结构

如果光看文件目录的话,大致新建一个文件夹(如flasky),然后把原先的文件夹(如mysite)重命名为app,把hello.py重命名为__Init__.py.
当然这样做之后,你用python app/__init__.py是无法启动程序的
,因为 Python 不希望包内的模块成为启动文件。当然这又不是什么大不了的事情,与app同级路径下新建一个manage.py,内部代码如下:

from app import app
app.run()

这样时候再运行一下试试看?是不是一又可以用了。

但是说好的hello.py瘦身,你只是换个名字而已呀!

首先看下我们hello.py,内容太多,多图预警

img_d3446bbd8125a88e536214bb0658f8ca.png
A
img_7e5cda45f9f01f1dcc971511841ab972.png
B
img_6007ff852e003d453861c6f495dd5f7e.png
C
img_cebb19c95188a291fd01d49f0a0df30b.png
D

大致可以把原先的hello.py分为以下几个部分:所需库导入;应用设置(app.config);程序扩展功能(xxxx=xxxx(app);数据库模型(class xxx);视图函数(index())和错误处理部分。

既然hello.py(__init__.py)其实看成多个功能模块的组合,那么就把这些功能拆分为各个py文件,然后__init__.py导入各个模块进行加载。
那么最新的结构如下

img_5f220c85124cba641404a395c538154c.png

但是这个时候问题来了view.py的app是__init__.py中定义的,而__init__.py又要导入views才能返回页面,就变成你中有我,我中 有你,并且运行还出现各种问题,但是对于我那么懒得人,需要一个新的办法来解决。下篇介绍一个 Modular Applications with Blueprints蓝图先来解决这个烦人的问题。
所以__init__.py还是需要像之前一样胖,下一样进行修改。

目录
相关文章
|
4月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的我爱我家”地方特色农产品商城的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的我爱我家”地方特色农产品商城的详细设计和实现(源码+lw+部署文档+讲解等)
|
5月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的研学自习室选座与门禁系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的研学自习室选座与门禁系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
5月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的“我爱我家”地方特色农产品商城的详细设计和实现
基于SpringBoot+Vue的“我爱我家”地方特色农产品商城的详细设计和实现
37 2
|
5月前
|
测试技术 数据安全/隐私保护 Java
基于SpringBoot+Vue+uniapp的家乡特产网上商城的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的家乡特产网上商城的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的金旗帜文化培训学校网站的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的金旗帜文化培训学校网站的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的小码创客教育教学资源库的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的小码创客教育教学资源库的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的潍坊理工学院就业信息网的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的潍坊理工学院就业信息网的详细设计和实现(源码+lw+部署文档+讲解等)
157 0
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的鲸落文化线上体验馆的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的鲸落文化线上体验馆的详细设计和实现(源码+lw+部署文档+讲解等)
|
前端开发
书城项目全部代码4
书城项目全部代码4
51 0
|
安全 NoSQL Java
秀出新天际的SpringBoot笔记,让开发像搭积木一样简单
什么是 Spring Boot Java (面向对象编程语言)经过30多年的发展,产生了非常多的优秀框架。Spring (为解决企业应用程序开发的复杂性而创建的框架)曾是最受欢迎的Java框架之一, 但随着Node、Ruby、Groovy、PHP等脚本语言的蓬勃发展,使用Spring开发应用就显得繁琐了,因为它使用了大量的XML配置文件,配置繁琐,整合不易,开发和部署效率低下。这时急切需要一-种新的能解决这些问题的快速开发框架,于是Pivotal Software公司在2013开始了Spring Boot的研发。
191 0