• flask-蓝图(Blueprint)


    flask-蓝图(Blueprint)


    • flask蓝图的设计可以实现django类似的创建app的功能,蓝图可以让flask的项目更模块化,结构更加清晰,可以将相关的视图函数和配置放在同一个目录下,方便管理。
      • 主文件
        from flask import Flask
        from user.views import user_app
        import sys
        import os
        
        BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
        
        sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
        
        apps = [
            user_app,
        ]
        
        app = Flask(__name__)
        
        for each in apps:
            app.register_blueprint(each)
        
        if __name__ == '__main__':
            app.run()
      • app文件
        1 from flask import Blueprint
        2 
        3 user_app = Blueprint('user', __name__)
        4 
        5 
        6 @user_app.route('/user/login')
        7 def login():
        8     return 'login page'
      • 项目结构
      •  每个蓝图就是一个额外的app,蓝图需要在app.register_blueprint里面进行注册



      • 每个蓝图可以自定义静态文件和模板文件的路径
      • 蓝图会优先去主app制定的模板文件的路径去寻找文件,当app的指定的文件夹下没有想要的文件的时候,再去蓝图指定的文件夹下去寻找。
      • 静态文件加载也是一样的只不过是url_for反转的时候有些不同。url_for的第一个参数为蓝图初始化时候的名字加点和static,比如我这里 url_for('user.static')
      • 蓝图可以指定根路径,使用url_prefix参数,类似于django的include函数
      • 蓝图app
        1 from flask import Blueprint
        2 
        3 test_app = Blueprint('test', __name__, url_prefix='/test')
        4 
        5 @test_app.route('/index/')
        6 def hello():
        7     return 'hello world'
      • app
      •  1 from flask import Flask, url_for
         2 import blue
         3 
         4 app = Flask(__name__)
         5 
         6 app.register_blueprint(blue.test_app)
         7 
         8 
         9 @app.route('/')
        10 def index():
        11     return url_for('test.hello')
        12 
        13 
        14 if __name__ == '__main__':
        15     app.run()

        使用url反转必须用蓝图名加函数名(endpoint)

  • 相关阅读:
    vue项目中使用定时器,离开页面时清除定时器
    不能在循环中使用res.send(err);
    React使用require加载图片失败
    实验五 单元测试
    实验四 代码评审
    UML 建模工具的安装与使用
    结对编程 第二阶段
    结对编程
    GIT 代码版本管理
    结构化方法与面向对象化方法的比较
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/11538031.html
Copyright © 2020-2023  润新知