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


 

相关文章
|
9月前
|
网络协议 Java 应用服务中间件
框架源码私享笔记(01)Tomcat核心架构功能 | 配置详解
本文首先分享了《活出意义来》一书序言中的感悟,强调成功如同幸福,不是刻意追求就能得到,而是全心投入时的副产品。接着探讨了Tomcat的核心功能与架构解析,包括网络连接器(Connector)和Servlet容器(Container),并介绍了其处理HTTP请求的工作流程。文章还详细解释了Tomcat的server.xml配置文件,涵盖了从顶级容器Server到子组件Connector、Engine、Host、Context等的配置参数及作用,帮助读者理解Tomcat的内部机制和配置方法。
|
11月前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
6月前
|
存储 缓存 分布式计算
高内存场景必读!阿里云r7/r9i/r8y/r8i实例架构、性能、价格多维度对比
阿里云针对高性能需求场景,一般会在活动中推出内存型r7、内存型r9i、内存型r8y和内存型r8i这几款内存型实例规格的云服务器。相比于活动内的经济型e和通用算力型u1等实例规格,这些内存型实例在性能上更为强劲,尤其适合对内存和计算能力有较高要求的应用场景。这些实例规格的云服务器在处理器与内存的配比上大多为1:8,但它们在处理器架构、存储性能、网络能力以及安全特性等方面各有千秋,因此适用场景也各不相同。本文将为大家详细介绍内存型r7、r9i、r8y、r8i实例的性能、适用场景的区别以及选择参考。
|
9月前
|
存储 弹性计算 运维
阿里云通用算力型U1实例怎么样?u1实例技术架构、场景适配与优惠价格参考
阿里云服务器ECS 通用算力型u1实例2核4G,5M固定带宽,80G ESSD Entry盘,企业用户专享优惠价格199元1年,很多用户关心这个款云服务器怎么样?阿里云通用算力型U1实例自推出以来,凭借独特的"均衡算力+智能调度"设计理念,在IaaS市场开辟出差异化的竞争赛道。本文将通过技术架构解析、典型场景适配分析、全生命周期成本测算三个维度,全面解构这款热门云服务器实例的核心价值,以供参考和选择。
|
9月前
|
存储 开发框架 缓存
YashanDB实例架构
YashanDB实例架构
|
9月前
|
运维 供应链 前端开发
中小医院云HIS系统源码,系统融合HIS与EMR功能,采用B/S架构与SaaS模式,快速交付并简化运维
这是一套专为中小医院和乡镇卫生院设计的云HIS系统源码,基于云端部署,采用B/S架构与SaaS模式,快速交付并简化运维。系统融合HIS与EMR功能,涵盖门诊挂号、预约管理、一体化电子病历、医生护士工作站、收费财务、药品进销存及统计分析等模块。技术栈包括前端Angular+Nginx,后端Java+Spring系列框架,数据库使用MySQL+MyCat。该系统实现患者管理、医嘱处理、费用结算、药品管控等核心业务全流程数字化,助力医疗机构提升效率和服务质量。
566 4
|
9月前
|
算法 前端开发 定位技术
地铁站内导航系统解决方案:技术架构与核心功能设计解析
本文旨在分享一套地铁站内导航系统技术方案,通过蓝牙Beacon技术与AI算法的结合,解决传统导航定位不准确、路径规划不合理等问题,提升乘客出行体验,同时为地铁运营商提供数据支持与增值服务。 如需获取校地铁站内智能导航系统方案文档可前往文章最下方获取,如有项目合作及技术交流欢迎私信我们哦~
709 1
|
9月前
|
存储 智能硬件
CPU的定义与功能与架构
CPU(中央处理器)是计算机的核心部件,负责执行程序指令、控制数据传输和进行运算。它能处理算术与逻辑运算,并协调其他硬件协同工作。x86架构源于英特尔,适用于PC和服务器,采用复杂指令集;ARM架构则由Acorn等公司开发,广泛用于移动设备和嵌入式系统,采用精简指令集,功耗低且能效比高。
1279 5
|
程序员 API 数据库
Django/Flask深度揭秘:揭秘那些让程序员爱不释手的神奇功能!
在Web开发领域,Django与Flask凭借其独特魅力和强大功能深受程序员喜爱。Django作为全能型框架,以其ORM、模板引擎和丰富的内置功能著称;Flask则以轻量级、灵活的路由系统和强大的扩展生态见长。两者各具特色,为开发者提供了高效、灵活的开发工具。
163 4
|
机器学习/深度学习 存储 搜索推荐
NVIDIA Ampere 架构的结构化稀疏功能及其在搜索引擎中的应用
NVIDIA Ampere架构引入了结构化稀疏功能,显著加速了深度学习模型的推理过程。通过2:4的稀疏模式,即每4个相邻权重中有至少2个为0,实现了高效的内存访问和模型推理加速,同时保持了模型精度。腾讯机器学习平台部门利用这一特性,通过渐进式训练方法,实现了模型在搜索引擎中的高效部署与应用,如相关性预测、查询性能预测等场景,不仅提升了处理速度,还在某些情况下超过了原有模型的精度。此外,NVIDIA还提供了TensorRT和cuSPARSELt库,进一步增强了稀疏模型的推理效率。
284 0
 NVIDIA Ampere 架构的结构化稀疏功能及其在搜索引擎中的应用