Blueprint的用途

blueprint被翻译成蓝图,设计图,计划大纲,在flask框架中,blueprint的含义更偏向于设计大纲。如果一个基于flask的web app是一篇论文的话,那么blueprint就是论文的大纲,每个大纲是明显区别于其他部分的功能,所有的功能组成了这篇论文。

现在,我们以一个较大型的网站(简单的网站就没有必要使用blueprint了)为例说明blueprint的用法。几乎每个网站都有前台和后台之分,在很多情况下,前后台是由不同的开发者完成,这些开发者都有自己的工作目录,他们可不希望自己的代码与别人的混杂在一起,难以区分,并且还要解决很多的冲突(confict),尤其,他们不希望把所有的路由都写在一起,他们只希望以不同的url前缀(url_prefix)来隔离不同的功能。

前台应用声明一个blueprint

from flask import Blueprint,render_template

front = Blueprint('front',__name__)

@front.route('/front')
def front_show():
    return render_template('front/index.html')

front/index.html文件的内容:
Hi,this is front.index.html page

后台开发者声明另一个blueprint

from flask import Blueprint,render_template

front = Blueprint('backend',__name__)

@front.route('/backend')
def front_show():
    return render_template('backend/index.html')

backend/index.html文件的内容:
Hi,this is backend.index.html page

在入口文件中注册这两个blueprint

from flask import Flask
from front import front
from backend import backend

app = Flask(__name__)


app.register_blueprint(front.front)
app.register_blueprint(backend.backend)

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

用浏览器访问localhost:7777/front,localhost:7777/backend,可以看到不同的网页。

这不仅是入口文件变得很干净的问题,最重要的是blueprint将不同的功能以url为单位区分开了,实现了很好的模块化。

你可能感兴趣的:(Blueprint的用途)