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

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

1、Flask模块化结构规划

[[email protected] 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

2、run.py主运行文件配置

[[email protected] yangyun]# cat run.py

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模式。

3、asset功能模块配置

其它的功能模块配置相似

1) __init__.py文件配置

[[email protected] asset]# cat __init__.py

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文件配置

[[email protected] asset]# cat views.py

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)前端页面配置

[[email protected] yangyun]# echo ‘This isasset index page...‘ >templates/asset/index.html

4、user功能模块配置

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

1) __init__.py配置

[[email protected] yangyun]# cat  user/__init__.py

from flask import Blueprint
user=Blueprint(‘user‘,
                   __name__,
                   )
import views

2) views.py配置

[[email protected] yangyun]# cat user/views.py

from flask import  render_template
from user import user
 
@user.route(‘/‘)
def index():
         print‘__name__‘,__name__
         returnrender_template(‘user/index.html‘)

3) 静态页面配置

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

5、requirements.txt文件配置

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

[[email protected] 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、浏览器访问测试

后端运行程序

[[email protected] yangyun]# python run.py
 *Running on http://0.0.0.0:8000/ (Press CTRL+C to quit)
 *Restarting with stat

前端访问asset页面

前端访问user页面

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

以上

时间: 2024-11-09 09:34:33

Flask blueprint蓝图按功能模块化架构实例的相关文章

Python进阶(四十九)-初识Flask Blueprint

Python进阶(四十九)-初识Flask Blueprint 前言   在进行Python Web开发时选择Flask框架.项目模块划分阶段,使用Blueprint(这里暂且称之为“蓝本”).Blueprint通过把实现不同功能的module分开,从而把一个大的application分割成各自实现不同功能的module.在一个Blueprint中可以调用另一个blueprint的view function, 但要加相应的blueprint名.   Blueprint还有其他好处,其本质上来说就

微信Android模块化架构重构实践

微信Android架构历史 微信Android诞生之初,用的是常见的分层结构设计.这种架构简单.清晰并一直沿袭至今.这是微信架构的v1.x时代. 图1-架构演进 到了微信架构的v2.x时代,随着业务的快速发展,消息通知不及时和Android 2.3版本之前webview内存泄露问题开始突显.由于代码.内存.apk大小都在增长,对系统资源的占用越来越多,导致微信进程容易被系统回收.因此微信开始转向多进程架构,独立的通信进程保持长连接的稳定性,独立的webview进程也阻隔了内存泄露导致的问题. 时

【DDD】领域驱动设计实践 —— 架构风格及架构实例

概述 DDD为复杂软件的设计提供了指导思想,其将易发生变化的业务核心域放置在限定上下文中,在确保核心域一致性和内聚性的基础上,DDD可以被多种语言和多种技术框架实现,具体的框架实现需要根据实际的业务场景和需求来制定. 核心的指导思路归纳为: 关注点放在domain上,将业务领域限定在同一上下文中 降低上下文之间的依赖,通过‘开发主机服务’(REST服务是其中的一种).‘消息模式’.‘事件驱动’等架构风格实现 遵循分层架构模式 架构风格 针对DDD的架构设计,<实现领域驱动设计>提到了几种架构风

架构实例之Demo_JSP_JavaBean_Servlet

架构实例之Demo_JSP_JavaBean_Servlet 1.开发工具和开发环境       开发工具: MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),mysql5.7.13 开发环境:WIN10 2.Demo_JSP_JavaBean_Servlet实现功能 用户登录.用户注册.退出登录. 3.Demo_JSP_Java_Bean_Servlet使用技术       本实例使用了JSP.JavaBean.Servlet和JDBC来实现用户登录.用户

架构实例之Demo_JSP_JavaBean

架构实例之Demo_JSP_JavaBean 1.开发工具和开发环境      开发工具: MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),mysql5.7.13 开发环境:WIN10 2.Demo_JSP_JavaBean实现功能      用户登录.用户注册.退出登录. 3.Demo_JSP_Java_Bean使用技术      本实例使用了JSP.JavaBean和JDBC来实现用户登录.用户注册和退出登录功能.系统架构图如图一所示: 图一:Demo

架构实例之Demo_JSP

架构实例之Demo_JSP 1.开发工具和开发环境       开发工具: MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),mysql5.7.13 开发环境:WIN10 2.Demo_JSP实现功能      用户登录.用户注册.退出登录. 3.Demo_JSP使用技术     本实例使用了JSP.JDBC来实现用户登录.用户注册和退出登录功能.系统架构图如图一所示: 图一:Demo_JSP系统架构图 下面请看图二(Demo_JSP中JSP文件间逻辑关系图

架构实例之SpringTest

架构实例之SpringTest 1.开发工具和开发环境       开发工具: MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),mysql5.7.13 开发环境:WIN7 2.SpringTest实现功能 用户登录.用户注册.退出登录. 3.SpringTest使用技术       本实例使用了JSP.Spring3.1框架.JdbcTemplate来实现用户登录.用户注册和退出登录功能.系统架构图如图一所示:   图一:SpringTest系统架构图 4

【Flask】蓝图

蓝图应用 在Flask中的蓝图 blueprint其实本质上就是将应用解耦,不同的应用分别放在不同的文件内 蓝图一 from flask import Blueprint,render_template user = Blueprint("user",__name__,template_folder="tmp") # 参数user表示蓝图唯一标识不能重复,实例化一个蓝图(Blueprint)对象 @user.route("/user",metho

flask的蓝图设计

flask的蓝图 蓝图的作用以及结构(结构的目录需要自己定义) 蓝图的作用:规范文件的目录(可以实现多个app,如admin的APP,user的APP) 比如: -proj_flask -proj_flask _admin -static -templates -__init__.py -views.py -user -static -templates -__init__.py -views.py -user.py -blog.py -__init__.py -run.py 启动文件run.p