zoukankan      html  css  js  c++  java
  • flask中的蓝图(Blueprint)

    一、场景

    在进行flask开发的时候,需要按照不同的封装对象进行开发。比如我们在开发电影网站,可以按照电影的url,用户的url,评论的url来进行开发,避免了将整个url都放入一个文件中,此时我们就需要使用到flask中的蓝图。

    二、使用

    使用蓝图按照以下的顺序:

    创建蓝图-->在flask的APP中引入蓝图-->注册蓝图

    我们将创建一个main_func1、other、user的蓝图,并在flask_init文件中注册这些蓝图。

    文件结构如下:

     

    模型分管示意图

    2.1 创建蓝图

    创建蓝图就是创建一个文件,然后给他注册好名字,随后引入。

    main_func.py文件

    # 引入Blueprint包
    from flask import Blueprint
    
    # 创建蓝图,名字叫做main_fun
    main_fun1 = Blueprint("main_fun", __name__)
    
    
    # 创建该蓝图下的路由
    @main_fun1.route("/home")
    def x1():
        data = {
            "main_fun": "java",
        }
        return data

    other.py文件

    from flask import Blueprint
    
    other = Blueprint("other", __name__)
    
    
    @other.route("/home")
    def x1():
        data = {
            "other": "other",
        }
        return data

    user.py文件

    from flask import Blueprint
    
    user = Blueprint("user", __name__)
    
    
    @user.route("/home")
    def x1():
        data = {
            "user": "user",
        }
        return data

    2.2 创建app与注册蓝图

    在flask_init.py文件中创建APP,并注册蓝图

    from flask import Flask
    # 引入蓝图
    from .main_func import main_fun1
    from .other import other
    from .user import user
    
    # 创建flask对象
    app = Flask(__name__)
    
    
    # 注册蓝图
    # url_prefix是设置访问这个蓝图的时候需要带上的路由
    app.register_blueprint(main_fun1, url_prefix='/main_fun')
    app.register_blueprint(user, url_prefix='/user')
    app.register_blueprint(other, url_prefix='/other')

    2.3 测试

    2.3.1 url_prefix的作用

    2.3.2 蓝图的作用

    在每个蓝图下面设置相同的home路由

    main_func.py下的路由

    other.py下的路由

    user.py下的路由

    三、总结

    通过我们的例子可以看到蓝图作为一个分发管理的工具,在flask开发的过程中尤为重要,与Django开发的时候设置url的转发有异曲同工之妙。

    note:在引入的时候会出现下面的错误,查看原因是由于它不能识别这个文件是个模块,具体可以查看这个博客。因此需要在当前文件下面建一个__init__.py的文件

    ImportError: attempted relative import with no known parent package

    四、参考

    Flask实例博客:

    1. https://blog.csdn.net/weixin_41973615/article/details/82252501

    2. https://blog.csdn.net/matengbing/article/details/78582117

    3. https://www.cnblogs.com/zishu/p/11158804.html

    Flask官方文档:

    1. 1.1.1的官方文档

    2. 0.10.1的 官方文档

  • 相关阅读:
    洛谷P1071 潜伏者
    2019BJFU 网站设计(孙俏-web前端开发)实验代码-181002222
    反思——P1307 数字反转
    洛谷P1067 多项式输出
    湖南大学第十五届程序设计竞赛(重现赛)
    2019河北省大学生程序设计竞赛(重现赛)
    2019BJFU C++实验习题(完结)
    配置android source 在ubuntu中编译环境
    Android屏幕保持唤醒状态
    Android richtext
  • 原文地址:https://www.cnblogs.com/future-dream/p/14295612.html
Copyright © 2011-2022 走看看