python框架_flask_基础知识

Blueprint

  • 出现的原因:在使用flask进行一个项目编写的时候,可能会有许多个模块,如果把所有的这些模块都放在一个views.py文件之中,那么最后views.py文件必然臃肿不堪,并且极难维护
  • 原理:Blueprint其实本身只是对view上的接口进行了注册,然后整体挂载在app上,Blueprint本身的目的就是组织多模块的平行共存,避免直接在app上注册view,Flask 中的Blueprint不是一个可插拨的应用,因为它不是一个真正的应用,而是一套可以注册 在应用中的操作,并且可以注册多次。
  • 应用会在Flask层中进行统一管理,共享配置,通过注册按需调用应用对象。
# 项目的init文件

def create_app(config_name):  # 启动方式传参
    """
    创建flask的应用对象
    :param config_name:     配置模式的模式的名字,['develop','product']
    :return:
    """
    app = Flask(__name__)

    # 根据配置模式的名字获取配置参数的类
    config_class = CONFIG_MAP.get(config_name)  
    app.config.from_object(config_class)

    # 使用app初始化db
    db.init_app(app)

    # 初始化redis工具
    global redis_store
    redis_store = redis.StrictRedis(host=config_class.REDIS_HOST, port=config_class.REDIS_PORT)  # 利用config_class的类属性访问属性值

    # 用flask-session,将session数据保存到redis中
    Session(app)

    # 为flask补充csrf防护(前端发送POST请求,后端通过钩子函数进行防护)
    CSRFProtect(app)

    # 添加自定义转换器,放在应用建立后且注册蓝图前
    app.url_map.converters['re'] = ReConverter

    # 注册蓝图
    from ihome import api_1_0
    app.register_blueprint(api_1_0.api, url_prefix="/api_1_0")

    from ihome import web_html
    app.register_blueprint(web_html.html,)

    return app

猜你喜欢

转载自blog.csdn.net/sinat_40701582/article/details/106304352