zoukankan      html  css  js  c++  java
  • 【flask】工厂函数和蓝本的作用

    Flask学习中的工厂函数和蓝本

    程序的工厂函数在app包的构造文件中定义,即__init__.py。这个构造文件导入大多数正在使用的Flask扩展。不过由于尚未初始化所需的程序实例,所以没有初始化扩展,创建扩展类时也没有向构造函数传入参数。create_app()函数就是程序的工厂函数,他接受一个程序使用的配置名作为参数,该配置名在config.py文件中定义。程序创建,配置后,就能初始化扩展了。在之前创建的扩展对象上调用init_app()可以完成初始化过程。

    转换成程序工厂函数的操作让定义路由变得复杂了。本来我们单脚本文件可以直接使用app.route修饰器的。现在由于程序是在运行时创建的,只有调用create_app()之后才能使用app.route修饰器,然而这时才定义路由就太晚了。为了解决使用工厂函数新带来的问题,Flask提供了蓝本的解决方案。蓝本和程序类似,也可以定义路由,不同的是,在蓝本中定义的路由处于休眠状态,直到蓝本注册到程序上,路由才会成为程序的一部分。这样一来,使用位于全局作用域的蓝本时,定义路由的方法几乎和单脚本程序一样。为了使蓝本有更大的灵活性,建议使用更结构化的方式在包中的多个模块中创建蓝本,为此,在程序包中创建一个子包,专门保存蓝本。蓝本的创建是通过实例化一个Buleprint类对象,创建时必须传入两个参数:蓝本的名字和蓝本所在的包或者模块,这样,模块就能和蓝本产生关联。另外蓝本在工厂函数中注册到程序上。

    工厂函数

    网上说了一大堆,我感觉就是重新封装了一个create_app函数,然后将一个配置文件传给创建的app实例。 这个配置文件决定了你是什么环境。就这些。

    蓝本

    作用:将一大推混杂在一起的视图函数分模块话,方便多人修改 ###1.创建蓝本:

    第一参数是模块名字,第二个参数是模块所在的包 创建完成后,需要将原来的app.route(),中的app改为你创建蓝本的名字 ###2.注册蓝本 ![](https://img2018.cnblogs.com/blog/1532705/201910/1532705-20191025160608464-1207365511.png) 第一个参数是模块名,第二个参数是路由前缀。定义视图函数的时候就可以去掉这个前缀,也可以不写,如果你不嫌麻烦的话。
    不怕世界大,就怕格局小
  • 相关阅读:
    Vim Taglist插件的安装与配置
    static变量和static函数
    Linux线程同步读写锁 rwlock
    Linux top命令 使用详解
    Python学习资料
    记录点滴
    自定义的动态buffer
    【数据存储】【Redis】第七章:Redis缓存Zset类型的使用
    RabbitMQ:第二章:Spring整合RabbitMQ(简单模式,广播模式,路由模式,通配符模式,消息可靠性投递,防止消息丢失,TTL,死信队列,延迟队列,消息积压,消息幂等性)
    RabbitMQ:第三章:Springboot集成RabbitMQ(直连模式,工作队列模式,发布订阅模式,路由模式,通配符模式)
  • 原文地址:https://www.cnblogs.com/wangjian1226/p/10521042.html
Copyright © 2011-2022 走看看