Flask blueprint蓝图按功能模块化架构实例

简介:

使用flask作为开发框架,一定要按功能模块化,否则到了后面项目越大,开发速度就越慢。

1Flask模块化结构规划

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@yang-218 yangyun] # tree
.
├── asset                #资产功能目录
│   ├── __init__.py
│   ├── models.py         #资产数据库结构文件
│   └── views.py          #资产视图文件
├── user                 #用户功能目录
│  ├──__init__.py
│  ├── models.py           #用户数据库结构文件
│  └── views.py            #用户视图配置文件
├── config.py              #公共配置文件
├── requirements.txt         #需要的安装包
├── run.py                #主运行文件
├── static                #静态文件目录,css,js, image等
└── templates              #静态页面存放目录
    ├── asset            #asset功能模块页面存放目录
     │  └── index.html
     ├── index.html          #首页
     └── user                        
         └── index.html

2run.py主运行文件配置

[root@yang-218 yangyun]# cat run.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from  flask  import  Flask
from  asset  import  asset
from  user  import  user
  
  
apple = Flask(__name__,
         template_folder = 'templates' #指定模板路径,可以是相对路径,也可以是绝对路径。 
         static_folder = 'static' ,   #指定静态文件前缀,默认静态文件路径同前缀
         #static_url_path='/opt/auras/static',     #指定静态文件存放路径。
          )
apple.register_blueprint(asset,url_prefix = '/asset' )     #注册asset蓝图,并指定前缀。
apple.register_blueprint(user)       #注册user蓝图,没有指定前缀。
  
if  __name__ = = '__main__' :
          apple.run(host = '0.0.0.0' ,port = 8000 ,debug = True )   #运行flask http程序,host指定监听IP,port指定监听端口,调试时需要开启debug模式。


3asset功能模块配置

其它的功能模块配置相似

 

1) __init__.py文件配置

[root@yang-218 asset]# cat __init__.py

1
2
3
4
5
6
7
8
9
from  flask  import  Blueprint
  
asset = Blueprint( 'asset' ,
         __name__,
         #template_folder='/opt/auras/templates/',   #指定模板路径
          #static_folder='/opt/auras/flask_bootstrap/static/',#指定静态文件路径
                    )
  
import  views

 

2) views.py文件配置

[root@yang-218 asset]# cat views.py

1
2
3
4
5
6
7
from  flask  import   render_template
from  asset  import  asset
  
@asset .route( '/' )               #指定路由为/,因为run.py中指定了前缀,浏览器访问时,路径为http://IP/asset/
def  index():                         
          print '__name__' ,__name__
          returnrender_template( 'asset/index.html' )   #返回index.html模板,路径默认在templates下

 

3)前端页面配置

1
[root@yang-218 yangyun] # echo 'This isasset index page...' >templates/asset/index.html

 

4user功能模块配置

此处配置和上述asset的配置一致

1) __init__.py配置

[root@yang-218 yangyun]# cat  user/__init__.py

1
2
3
4
5
from  flask  import  Blueprint
user = Blueprint( 'user' ,
                    __name__,
                    )
import  views

2) views.py配置

[root@yang-218 yangyun]# cat user/views.py

1
2
3
4
5
6
7
from  flask  import   render_template
from  user  import  user
  
@user .route( '/' )
def  index():
          print '__name__' ,__name__
          returnrender_template( 'user/index.html' )

 

3) 静态页面配置

1
echo  'This is User page....'   >templates /user/index .html

 

5requirements.txt文件配置

主要作用是记录需要的依赖包,新环境部署时安装如下依赖包即可,pip安装命令pip install -r requirements.txt

1
2
3
4
5
6
[root@yang-218 yangyun] # catrequirements.txt
Flask==0.10.1
Flask-Bootstrap==3.3.5.6
Flask-Login==0.2.11
Flask-SQLAlchemy==2.0
Flask-WTF==0.12

 

6、浏览器访问测试

后端运行程序

1
2
3
[root@yang-218 yangyun] # python run.py
  *Running on http: //0 .0.0.0:8000/ (Press CTRL+C to quit)
  *Restarting with stat

前端访问asset页面

wKioL1X6FUTg52DlAABF2vmZqMA453.jpg


前端访问user页面

wKiom1X6EwyDfQ7XAABu-gqfM60350.jpg

为什么出现404?因为在run.py里没有指定前缀,所以url里不需要加user

wKioL1X6FUSyI3DjAAA7JI0SKS0527.jpg

 以上






     本文转自杨云1028 51CTO博客,原文链接:http://blog.51cto.com/yangrong/1695562,如需转载请自行联系原作者


 

相关文章
|
7月前
|
存储 物联网 数据管理
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(12)
现在到了使用Apache IoTDB进行IoT相关开发的架构设计与功能实现的最后一个环境,在本文中我将向大家介绍IoTDB的查询语言。IoTDB为咱们广大开发者提供了类似SQL的查询语言,用于与IoTDB进行交互,查询语言可以分为4个主要部分:架构语句、数据管理语句、数据库管理语句、功能。
132 0
|
7月前
|
SQL 物联网 Apache
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(11)
目前,IoTDB中不存在冲突的权限,因此用户的真正权限是用户自身权限和用户角色权限的结合。也就是说,要确定用户是否可以执行操作,取决于用户自己的权限之一或用户角色的权限是否允许该操作。用户自己的特权和用户角色的特权可能会重叠,但这并不重要。
125 1
|
6月前
|
存储 前端开发 JavaScript
潮玩宇宙大逃杀无聊猿卷轴模式系统开发详细规则丨步骤需求丨方案项目丨技术架构丨源码功能
确定游戏类型和规则:明确无聊猿卷轴模式游戏类型和游戏规则,包括敌人类型、地图设计、任务类型、战斗机制等。
|
7月前
|
SQL 传感器 物联网
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(10)
物联网提供限制/限制条款和偏移/偏移子句,以使用户对查询结果有更多的控制权。使用 LIMIT 和 SLIMIT 子句允许用户控制查询结果的行数和列数,使用 OFFSET 和 SOFSET 子句允许用户设置结果的起始位置进行显示。
|
21天前
|
NoSQL Java Redis
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件(二)
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件
14 0
|
4月前
|
前端开发 JavaScript 数据库
Flask狼书笔记 | 09_图片社交网站 - 大型项目的架构与需求(2)
9.8 收藏图片 前面已经学习过如何使用关联表来表示多对多关系,缺点是只能表示关系,不能存储数据(如我还想记录下收藏图片的时间戳)。这种情况下,我们可以使用关联模型来表示多对多关系。 在关联模型中,我们将Photo模型与User模型的多对多关系,分离成了User模型和Collect模型的一对多关系,和Photo模型与Collect模型的一对多关系。
59 0
|
3天前
|
JSON 安全 API
Flask-Login与Flask-RESTful:扩展你的应用功能
【4月更文挑战第16天】本文介绍了两个实用的Flask扩展——Flask-Login和Flask-RESTful。Flask-Login提供用户认证和会话管理,简化了登录、注销和保护路由的逻辑。而Flask-RESTful则助力构建RESTful API,支持多种HTTP方法和请求解析。通过这两个扩展,开发者能轻松增强Flask应用的功能性,实现安全的用户认证和高效的API交互。
|
1月前
|
存储 安全 JavaScript
使用Python的Flask框架开发验证码登录功能
使用Python的Flask框架开发验证码登录功能
27 0
|
1月前
|
SQL 存储 数据管理
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
35 1
|
2月前
|
消息中间件 架构师 NoSQL
以架构师的视角,深入剖析如何设计订单超时自动取消的功能
我们在美团 APP 下单,假如没有立即支付,进入订单详情会显示倒计时,如果超过支付时间,订单就会被自动取消。 这篇文章,笔者想以架构师的视角,深入剖析如何设计订单超时自动取消的功能。
以架构师的视角,深入剖析如何设计订单超时自动取消的功能