随着需求的扩展,项目的功能越来越多,因此,为了更换的管理项目的目录结构,需要把每一个功能模块,存放到相应的目录中,比如把这里的admin,user相关的视图方法分为两个组件,一个是admin组件,一个是user组件.这时我们可以
创建两个蓝图实现这两个独立的组件。
一个蓝图定义了可用于单个应用的视图,模板,静态文件等等的集合。
比较好的习惯是将蓝图放在一个单独的包里,所以让我们先创建一个admin
子目录,并创建一个空的__init__.py
表示它是一个Python的包。
我们先看看项目最初的目录结构:
didiplus@DESKTOP-DOBAOAT:~/Flask_admin$ tree
.
├── README.md
├── apps
│ └── __init__.py
├── config.py
├── manager.py
└── requirements.txt
现在有个需求,要增加一个admin
和user
模块,统一把功能模块存放到apps
目录。
didiplus@DESKTOP-DOBAOAT:~/Flask_admin$ mkdir apps/{user,admin}
didiplus@DESKTOP-DOBAOAT:~/Flask_admin$ tree
.
├── README.md
├── apps
│ ├── __init__.py
│ ├── admin
│ └── user
├── config.py
├── manager.py
└── requirements.txt
3 directories, 5 files
现在模块正式编写蓝图,逻辑功能我们统一存放到各自模块下的views.py
文件中。
#admin/views.py
from flask import Blueprint # 导入Flask中的蓝图Blueprint模块
admin_bp=Blueprint('admin',__name__) # 实例化一个蓝图(Blueprint)对象
@admin_bp.route('/')
def index():
return 'Hello, this is admin blueprint
'
在manager.py
,注册这两个蓝图。
from apps import create_app
from flask_script import Manager,Server
'''
生成环境-produce
开发环境-development
测试环境-test
以上三个值通过config配置
'''
app = create_app('development')
#注册蓝图
from apps.admin.views import admin_bp
from apps.user.views import user_bp
app.register_blueprint(admin_bp,url_prefix='/admin')
app.register_blueprint(user_bp,url_prefix='/user')
manager = Manager(app)
manager.add_command('runserver',Server('0.0.0.0',port=5000))
if __name__ == "__main__":
manager.run()
url_prefix:是为蓝图添加前缀,在访问时,必须添加这个前缀
通过上述的register_blueprint
就可以把,蓝图注册到app
中,接下来,启动项目,就能访问到这两个功能模块。