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,如需转载请自行联系原作者


 

相关文章
|
13天前
|
程序员 API 数据库
Django/Flask深度揭秘:揭秘那些让程序员爱不释手的神奇功能!
在Web开发领域,Django与Flask凭借其独特魅力和强大功能深受程序员喜爱。Django作为全能型框架,以其ORM、模板引擎和丰富的内置功能著称;Flask则以轻量级、灵活的路由系统和强大的扩展生态见长。两者各具特色,为开发者提供了高效、灵活的开发工具。
35 4
|
1月前
|
Kubernetes 调度 算法框架/工具
NVIDIA Triton系列02-功能与架构简介
本文介绍了NVIDIA Triton推理服务器的功能与架构,强调其不仅适用于大型服务类应用,还能广泛应用于各类推理场景。Triton支持多种模型格式、查询类型和部署方式,具备高效的模型管理和优化能力,确保高性能和系统稳定性。文章详细解析了Triton的主从架构,包括模型仓库、客户端应用、通信协议和推理服务器的核心功能模块。
58 1
NVIDIA Triton系列02-功能与架构简介
|
1月前
|
机器学习/深度学习 存储 搜索推荐
NVIDIA Ampere 架构的结构化稀疏功能及其在搜索引擎中的应用
NVIDIA Ampere架构引入了结构化稀疏功能,显著加速了深度学习模型的推理过程。通过2:4的稀疏模式,即每4个相邻权重中有至少2个为0,实现了高效的内存访问和模型推理加速,同时保持了模型精度。腾讯机器学习平台部门利用这一特性,通过渐进式训练方法,实现了模型在搜索引擎中的高效部署与应用,如相关性预测、查询性能预测等场景,不仅提升了处理速度,还在某些情况下超过了原有模型的精度。此外,NVIDIA还提供了TensorRT和cuSPARSELt库,进一步增强了稀疏模型的推理效率。
19 0
 NVIDIA Ampere 架构的结构化稀疏功能及其在搜索引擎中的应用
|
19天前
|
数据管理 Nacos 开发者
"Nacos架构深度解析:一篇文章带你掌握业务层四大核心功能,服务注册、配置管理、元数据与健康检查一网打尽!"
【10月更文挑战第23天】Nacos 是一个用于服务注册发现和配置管理的平台,支持动态服务发现、配置管理、元数据管理和健康检查。其业务层包括服务注册与发现、配置管理、元数据管理和健康检查四大核心功能。通过示例代码展示了如何在业务层中使用Nacos,帮助开发者构建高可用、动态扩展的微服务生态系统。
63 0
|
1月前
|
前端开发 JavaScript 中间件
七、Flask蓝图使用之七
七、Flask蓝图使用之七
34 0
|
2月前
|
Java API 开发者
【Java模块化新飞跃】JDK 22模块化增强:构建更灵活、更可维护的应用架构!
【9月更文挑战第9天】JDK 22的模块化增强为开发者构建更灵活、更可维护的应用架构提供了强有力的支持。通过模块化设计、精细的依赖管理和丰富的工具支持,开发者可以更加高效地开发和管理应用,提高应用的性能和可维护性。
86 10
|
2月前
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
150 9
|
2月前
|
设计模式 存储 人工智能
深度解析Unity游戏开发:从零构建可扩展与可维护的游戏架构,让你的游戏项目在模块化设计、脚本对象运用及状态模式处理中焕发新生,实现高效迭代与团队协作的完美平衡之路
【9月更文挑战第1天】游戏开发中的架构设计是项目成功的关键。良好的架构能提升开发效率并确保项目的长期可维护性和可扩展性。在使用Unity引擎时,合理的架构尤为重要。本文探讨了如何在Unity中实现可扩展且易维护的游戏架构,包括模块化设计、使用脚本对象管理数据、应用设计模式(如状态模式)及采用MVC/MVVM架构模式。通过这些方法,可以显著提高开发效率和游戏质量。例如,模块化设计将游戏拆分为独立模块。
180 3
|
3月前
|
Cloud Native
核心系统转型问题之平衡核心架构中的功能性与非功能性需求如何解决
核心系统转型问题之平衡核心架构中的功能性与非功能性需求如何解决
|
3月前
|
移动开发 前端开发 weex
Android项目架构设计问题之模块化后调用式通信如何解决
Android项目架构设计问题之模块化后调用式通信如何解决
16 0