美文网首页
蓝图(blueprint)

蓝图(blueprint)

作者: Elvis_zhou | 来源:发表于2018-07-03 21:41 被阅读0次

    Blueprint

    一. 什么是蓝图

    当你的项目有很多模块时,放在一起的话,既不方便查看,耦合度又太高。所以Flask提供了蓝图(Blueprint)功能。蓝图使用起来就像应用当中的子应用一样,可以有自己的模板,静态目录,有自己的视图函数和URL规则,蓝图之间互相不影响。但是它们又属于应用中,可以共享应用的配置。对于大型应用来说,我们可以通过添加蓝图来扩展应用功能,而不至于影响原来的程序。不过有一点要注意,目前Flask蓝图的注册是静态的,不支持可插拔。

    二. 初识蓝图

    蓝图/Blueprint对象用起来和一个应用Flask对象差不多,最大的区别在于一个 蓝图对象没有办法独立运行,必须将它注册到一个应用对象上才能生效

    使用蓝图可以分为三个步骤

    1. 导入蓝图模块, 创建蓝图对象
    news_blue=Blueprint('news',__name__)
    
    1. 使用创建的蓝图对象实现路由
    @admin.route('/news_blue')
    def news_blue():
        return 'news_blue'
    
    1. 在应用对象上注册这个蓝图对象
    app.register_blueprint(news_blue)
    

    当这个应用启动后,通过/news/可以访问到蓝图中定义的视图函数

    三. 目录模块形式

    通常在开发项目中,路由需要拆分到一些目录模块中,每个模块内可以拥有独立的模板文件夹、静态文件夹等.此时写法需要略微调整.仍然是蓝图的三个步骤

    1. 导入蓝图模块, 创建蓝图对象, 同时导入子模块
      在new/init.py内,
    # 1. 导入蓝图模块, 创建蓝图对象
    from flask import Blueprint
    
    news_blue = Blueprint('news', __name__)
    
    # 这里需要导入子模块, 否则程序不知道哪个文件使用了蓝图对象
    from . import views
    

    这里的‘news’是视图函数的前缀名,在之后会用 url_for 引用视图函数所渲染的网页,name后还有一个 url_prefix='/admin' 这是给访问地址加前缀的,防止重名。

    1. 导入创建的蓝图对象, 使用创建的蓝图对象实现路由
      在new/views.py内
    # 2. 使用蓝图对象实现路由
    from . import news_blue
    @news_blue.route('/news_list')
    def news_list():
        return 'news_list'
    
    1. 在应用对象上注册这个蓝图对象(跟单文件一样)
    app.register_blueprint(news_blue)
    

    4.简单的总结
    蓝图的使用步骤:
    1.导入蓝图,创建蓝图对象
    2.使用蓝图对象,修改路由
    3.在app(flask对象)创建的地方注册蓝图

    相关文章

      网友评论

          本文标题:蓝图(blueprint)

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