美文网首页
Blueprint的用途

Blueprint的用途

作者: EdisonDong | 来源:发表于2017-02-05 18:23 被阅读0次

    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的用途

          本文链接:https://www.haomeiwen.com/subject/efbeittx.html