flask blueprint

在使用flask进行一个项目编写的时候,可能会有许多个模块,如一个网站的前台(home)和后台(admin)模块,如果把这两个模块都放在一个views.py文件之中,那么最后views.py文件必然臃肿不堪,并且不易维护,因此flask中便有了blueprint的概念,可以分别定义模块的视图、模板、视图等等,我们可以使用blueprint进行不同模块的编写,不同模块之间有着不同的静态文件、模板文件、view文件,十分方便代码的维护和管理。示例如下:

目录结构:

admin下__init__.py和views.py

__init__.py

#!/usr/bin/env python
#-*-coding:utf-8-*-

##定义蓝图
from flask import Blueprint

adminbapp = Blueprint("admin",__name__)         #adminbapp为蓝图的名称,不能和模块名称相同,否则会报错

import admin.views

views.py #!/usr/bin/env python #-*-coding:utf-8-*- from . import adminbaqq          #.可以理解为__init__.py @adminbapp.route() def index(): return "admin.index"

home下__init__.py和views.py

__init__.py

#!/usr/bin/env python
#-*-coding:utf-8-*-

##定义蓝图
from flask import Blueprint

homebapp = Blueprint("admin",__name__)         #home为蓝图的名称

import home.views


views.py

#!/usr/bin/env python
#-*-coding:utf-8-*-

from . import home

@homebapp.route()
def index():
    return "home.index"

注册蓝图对象(主程序文件,本例为movie_project文件)

from flask import Flask

app = Flask(__name__)       #实例化flask
app.debug = True

#导入蓝图对象(from 文件夹 import 定义的蓝图名称(本例在_init__中定义的))
from admin import adminbap as admin_blueprint
from home import homebapp as home_blueprint

#注册(对象名称(蓝图名称),url前缀)
app.register_blueprint(home_blueprint)                    #前台首页不需要设置后缀
app.register_blueprint(admin_blueprint,url_prefix='/admin')         #后台登录设置一下前缀


@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run()

编写入口脚本(可有可无)

 manage.py

#!/usr/bin/env python
#-*-coding:utf-8-*-

from movie_project import app   #从movie_project中导入app,也可以写成__init__.py


if __name__ == '__main__':
    app.run()
原文地址:https://www.cnblogs.com/FRESHMANS/p/8493719.html