• 【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

  • 相关阅读:
    翻译俄语的软件
    中国预制菜行业发展形势与前景规划建议报告2022-2028年版
    SENET和GateNet(推荐系统(embedding))
    Python自学笔记9:实操案例六(千年虫,购物流程)
    PostgreSQL数据库统计信息——analyze执行函数
    打造线上体育培训新体验:教育系统助力培训机构实现高效管理
    【知识图谱】实践篇——基于医疗知识图谱的问答系统实践(Part2):图谱数据准备与导入
    MIKE水动力笔记19_统计平均潮差
    MLX90640 红外热成像传感器测温模块开发笔记(二)
    C++ —— 缺省参数和函数重载
  • 原文地址:https://blog.csdn.net/m0_68744965/article/details/128164417