Fork me on GitHub

flask的蓝图机制注册前后台示例

前台为home目录,后台为admin目录

蓝图Blueprint

  • app项目目录结构:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
app
├── __init__.py
├── __init__.pyc
├── admin
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── forms.py
│   ├── views.py
│   └── views.pyc
├── home
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── forms.py
│   ├── views.py
│   └── views.pyc
└── models.py

tree

蓝图需要引入flask中的Blueprint

  • home目录下__init__.py引入蓝图:
1
from flask import Blueprint
  • 写入蓝图:
1
home = Blueprint("home",__name__)
  • 导入视图
1
import app.home.views

完整代码:

1
2
3
4
5
6
7
8
9
10
11
# -*- coding: utf-8 -*-
# @Time : 2018/1/6 15:00
# @Author : liwugang
# @Email : liwg@olei.me
# @File : __init__.py
# @Software: PyCharm
from flask import Blueprint
home = Blueprint("home",__name__)
import app.home.views
  • admin与上面类似,__init__.py完整代码:
1
2
3
4
5
6
7
8
9
10
11
12
# -*- coding: utf-8 -*-
# @Time : 2018/1/6 15:00
# @Author : liwugang
# @Email : liwg@olei.me
# @File : __init__.py
# @Software: PyCharm
from flask import Blueprint
admin = Blueprint("admin",__name__)
import app.admin.views

app项目的__init__.py书写

  • 引入蓝图模块
1
from flask import Blueprint
  • 引入homeadmin的蓝图
1
2
from app.home import home as home_blueprint
from app.admin import admin as admin_blueprint
  • 注册蓝图,为前端home分配默认路由为home目录的/,后端admin分配默认路由为/admin
1
2
app.register_blueprint(home_blueprint)
app.register_blueprint(admin_blueprint, url_prefix="/admin")

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# -*- coding: utf-8 -*-
# @Time : 2018/1/6 14:59
# @Author : liwugang
# @Email : liwg@olei.me
# @File : __init__.py
# @Software: PyCharm
from flask import Flask
app = Flask(__name__)
app.debug = True
from app.home import home as home_blueprint
from app.admin import admin as admin_blueprint
app.register_blueprint(home_blueprint)
app.register_blueprint(admin_blueprint, url_prefix="/admin")

定义两个的视图

  • adminviews.py为例
1
2
3
4
5
6
7
8
9
10
11
12
13
# -*- coding: utf-8 -*-
# @Time : 2018/1/6 15:01
# @Author : liwugang
# @Email : liwg@olei.me
# @File : views.py
# @Software: PyCharm
from . import admin
@admin.route("/")
def index():
return "<h1 style:'color:red'>this is admin!</h1>"

注册蓝图的时候,我们给了admin默认路由为/admin,这里写路由的时候就不用再写/admin

  • home同上:
1
2
3
4
5
6
7
8
9
10
11
12
13
# -*- coding: utf-8 -*-
# @Time : 2018/1/6 15:01
# @Author : liwugang
# @Email : liwg@olei.me
# @File : views.py
# @Software: PyCharm
from . import home
@home.route("/")
def index():
return "<h1 style:'color:green'>this is home!</h1>"

运行

  • 入口函数为manage.py
1
2
3
4
5
6
7
8
9
10
11
12
# -*- coding: utf-8 -*-
# @Time : 2018/1/6 14:58
# @Author : liwugang
# @Email : liwg@olei.me
# @File : manage.py
# @Software: PyCharm
# 入口函数
from app import app
if __name__ == "__main__":
app.run()
  • python manage.py

访问http://127.0.0.1:5000,界面会显示绿色字体的this is home!

访问http://127.0.0.1:5000/admin,界面会显示红色字体的this is admin!

禹都一只猫,热爱IT,支持原创