我们为了使得整个项目更便于查看,引入蓝图。
项目结构
.
├── app # Flask程序一般都保存在名为 app 的包中
│ ├── admin
│ │ ├── forms
│ │ │ └── __init__.py
│ │ ├── __init__.py
│ │ ├── utils.py
│ │ └── views
│ │ └── __init__.py
│ ├── home
│ │ ├── __init__.py
│ │ ├── forms.py
│ │ ├── utils.py
│ │ └── views.py
│ ├── __init__.py
│ ├── models.py
│ ├── static
│ │ ├── asset
│ │ │ ├── font-awesome
│ │ │ └── ueditor
│ │ ├── css
│ │ ├── fonts
│ │ ├── img
│ │ ├── js
│ │ └── upload
│ │ ├── movieImg
│ └── templates
│ ├── admin
│ ├── home
│ └── macro
├── config.py # 存储配置
├── doc
├── manage.py # 用于启动程序以及其他的程序任务
├── migrations # 文件夹包含数据库迁移脚本
└── requirement.txt # 用于记录所有依赖包及其精确的版本号
# 便于在其他电脑中重新生成相同的虚拟环境
# 使用 pip freeze > requirement.txt 可以自动生成这个文件
# requirement.txt中的内容:
```
Flask==0.10.1
Werkzeug==0.9.4
......
```
# 使用 pip install -r requirement.txt 可以下载这些模块
定义蓝图
在app/admin/__init__.py
中定义管理员的蓝图:
from flask import Blueprint
# 定义蓝图
# Blueprint接受两个参数实例化, 分别为蓝本的名字和蓝本所在的包或模块
# 大多数情况下第二个参数使用Python的 __name__ 变量即可
admin = Blueprint("admin", __name__)
# 导入所有的视图函数
from app.admin.views.main import *
from app.admin.views.tag import *
from app.admin.views.movie import *
from app.admin.views.preview import *
from app.admin.views.user import *
from app.admin.views.comment import *
from app.admin.views.collect import *
from app.admin.views.logs import *
from app.admin.views.auth import *
from app.admin.views.role import *
from app.admin.views.admin import *
在app/home/__init__.py
中定义用户的蓝图:
from flask import Blueprint
# 定义蓝图
home = Blueprint("home", __name__)
from app.home.views import *
在app/__init__.py
中注册蓝图:
写在文件末尾位置
# 创建蓝图的步骤
from app.admin import admin as admin_blueprint
from app.home import home as home_blueprint
# 注册admin蓝图, url_prefix='/admin'添加前缀/admin
app.register_blueprint(admin_blueprint, url_prefix='/admin')
# 注册home蓝图, 不添加前缀
app.register_blueprint(home_blueprint)
# 由于以上两条注册蓝图, 所以 127.0.0.1/login 即为前台登陆, 会员可见
# 127.0.0.1/admin/login 即为后台登陆, 管理员可见