• 【Flask框架】——03 应用程序的参数加载


    在这里插入图片描述

    在这里插入图片描述


    应用程序配置参数设置的是一个Web应用工程的相关信息,比如:

    • 数据库的连接信息

    • 日志的配置信息

    • 自定义的配置信息

    注意:这样可以集中管理项目的所有配置信息

    Flask将配置信息保存到了app.config属性中,该属性可以按照字典类型进行操作。

    1.从配置对象中加载

    app.config.from_object()

    # -*- coding: utf-8 -*-
    # @File  : 02应用程序参数.py
    # @author: Flyme awei 
    # @email : 1071505897@qq.com
    # @Time  : 2022/7/26 0:25
    
    
    from flask import Flask
    
    
    class DefaultConfig(object):
        """默认Web项目配置"""
        USER = 'Flyme awei'
        PWD = 'root'
    
    
    app = Flask(__name__)
    
    # 从配置对象中加载
    app.config.from_object(DefaultConfig)
    
    
    @app.route('/')
    def index():
        print(app.config['USER'])
        print(app.config["PWD"])
        return "hello word!"
    
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=8080)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    在这里插入图片描述
    这样的好处是可以在项目开发中来继承和重写:

    class MyDevelopmentConfig(DefaultConfig): 
    	DEBUG=True
    
    • 1
    • 2

    2.从配置文件中加载

    新建一个配置文件setting.py ,这个文件中的内容是:参数名=参数值 ,比
    如:PWD = 'root'

    app.config.from_pyfile('setting.py')

    # -*- coding: utf-8 -*-
    # @File  : setting.py.py
    # @author: Flyme awei 
    # @email : 1071505897@qq.com
    # @Time  : 2022/7/26 0:38
    
    
    # Web 项目的整个配置文件
    USER = 'Flyme awei'
    PWD = 'root'
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    # -*- coding: utf-8 -*-
    # @File  : 02从配置对象中加载.py
    # @author: Flyme awei 
    # @email : 1071505897@qq.com
    # @Time  : 2022/7/26 0:25
    
    
    from flask import Flask
    
    
    app = Flask(__name__)
    
    # 从配置文件中加载
    app.config.from_pyfile('setting.py')
    
    
    @app.route('/')
    def index():
        print(app.config['USER'])
        print(app.config["PWD"])
        return "hello word!"
    
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=8080)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    在这里插入图片描述

    3.从环境变量中加载

    先配置环境变量

    在这里插入图片描述

    在这里插入图片描述

    Flask使用环境变量加载配置的本质是通过环境变量值找到配置文件,再读取配置文件的信息,其使用方式为

    app.config.from_envvar('环境变量名')

    环境变量的值为配置文件的绝对路径

    先在终端中执行如下命令

    export PROJECT_SETTING='~/setting.py

    # -*- coding: utf-8 -*-
    # @File  : 04从环境变量中加载.py
    # @author: Flyme awei 
    # @email : 1071505897@qq.com
    # @Time  : 2022/7/26 0:50
    
    
    from flask import Flask
    
    
    app = Flask(__name__)
    
    # 从环境变量中加载
    app.config.from_envvar('SETTING_PATH', silent=True)
    
    
    @app.route('/')
    def hello_word():
        print(app.config['USER'])
        print(app.config['PWD'])
        return 'hello word'
    
    
    if __name__ == '__main__':
        app.run('0.0.0.0', 8888, debug=True)
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    silent参数:

    False 表示不安静的处理,没有值时报错通知,默认为False

    True 表示安静的处理,即时没有值也让Flask正常的运行下去

    4.从Pycharm中的运行时设置环境变量的方式加载

    使用非常少
    在这里插入图片描述在这里插入图片描述

    5.企业项目开发常用的方式

    使用工厂模式创建Flask app,并结合使用配置对象与环境变量加载配置

    • 使用配置对象加载默认配置

    • 使用环境变量加载不想出现在代码中的敏感配置信息

    def create_flask_app(config): 
    	""" 创建Flask应用 :param config: 配置对象 :return: Flask应用 """ 
    	app = Flask(__name__) 
    	app.config.from_object(config)
    
    	# 从环境变量指向的配置文件中读取的配置信息会覆盖掉从配置对象中加载的同名参数
    	app.config.from_envvar("PROJECT_SETTING", silent=True) 
    	return app 
    
    
    class DefaultConfig(object): 
    	"""默认配置""" 
    	USER = 'ROOT' 
    
    
    class DevelopmentConfig(DefaultConfig): 
    	DEBUG=True 
    
    
    # app = create_flask_app(DefaultConfig)
    app = create_flask_app(DevelopmentConfig) 
    
    
    @app.route("/") 
    def index(): 
    	print(app.config['USER']) 
    	return "hello world"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

  • 相关阅读:
    Hbase 之KeyValue结构详解
    二叉搜索树--查询节点-力扣 700 题
    ModelScope--人像卡通化、人像美肤
    【论文阅读|深读】DRNE:Deep Recursive Network Embedding with Regular Equivalence
    Php“梦寻”淘宝天猫商品详情数据接口,淘宝商品详情数据API接口,淘宝API接口申请指南(含代码示例)
    HTTPS的加密流程
    手把手教你实现法玛三因子模型
    去除做题痕迹的软件有哪些?安利三款好用的
    为什么页面跟设计稿差距这么大 优漫动游
    GBASE 8s cpu和共享内存配置参数
  • 原文地址:https://blog.csdn.net/m0_68744965/article/details/128164417