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

news2024/11/23 15:11:20

在这里插入图片描述

在这里插入图片描述


目录

    • 1.从配置对象中加载
    • 2.从配置文件中加载
    • 3.从环境变量中加载
    • 4.从Pycharm中的运行时设置环境变量的方式加载
    • 5.企业项目开发常用的方式

应用程序配置参数设置的是一个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)

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

class MyDevelopmentConfig(DefaultConfig): 
	DEBUG=True

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'

# -*- 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)

在这里插入图片描述

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)
    

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"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【苹果家庭推源码】利用新的Alloc Replication方法建立一个对象

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

[Database] 脏读、幻读这些都是什么?事务隔离级别又是什么?MySQL数据库的事务隔离级别都有哪些?

文章目录前言事务隔离级别三种数据不一致问题1. 脏读2. 不可重复读3. 幻读不可重复读 vs 幻读四种事务隔离级别1. READ UNCOMMITTED2. READ COMMITTED3. REPEATABLE READ4. SERIALIZABLE不同事务隔离级别会面临的问题不同隔离事务级别的使用率排名实战查看事务隔离级别更改事务…

linux篇【11】:计算机网络—网络基础

目录 一.网络基础 1.认识 "协议" 2.协议分层 (1)软件分层 (2)协议分层 3.OSI七层模型 4.TCP/IP五层(或四层)模型 5.网络和操作系统之间的关系 6.数据包的封装(封包)和解包,分用 (1&…

四、文件管理(一)文件系统基础

目录 1.1文件的基本概念 1.2文件控制块和索引结点 1.3文件的操作 1.4文件保护 1.5文件的逻辑结构 1.5.1无结构文件(流式文件) 1.5.2有结构文件(记录式文件) 1.5.2.1顺序文件 1.5.2.2索引文件 1.5.2.3索引顺序文件 1.5…

数据库之架构

一、数据库架构原则 高可用 高性能 一致性 扩展性 二、常见的架构方案 方案一:主备架构,只有主库提供读写服务,备库冗余作故障转移用 jdbc:mysql://vip:3306/xxdb 1、高可用分析:高可用,主库挂了,kee…

[ vulhub漏洞复现篇 ] Apache Solr RemoteStreaming 文件读取与SSRF漏洞 (CVE-2021-27905)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

C++11特性-易用性改进

1.字符串的原始字面量 表达式:R"xxx(原始字符串)xxx"或者R"(原始字符串)",xxx要写的话,必须一样 //两种申明形式string a "aaa";//没有转义的时候就是原始字面量string b R"aaa(…

总体设计阶段复习

总体设计总体设计(概要设计/初步设计):确定系统模块及相互关系,划分程序,文件,数据库,文档等物理元素设计原理:启发规则图形工具:面向数据流设计方法(SD)总体设计(概要设计/初步设计):确定系统模块及相互关系,划分程序,文件,数据库,文档等物理元素 系统设计阶段 数据流图分析方…

一篇五分生信临床模型预测文章代码复现——Figure 4-6 临床模型构建(六)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

FineReport智能数据图表- 文本域控件

1. 概述 1.1 版本 报表服务器版本 11.0 1.2 应用场景 1.2.1 填报控件 填报报表中可以通过该控件输入多行文本信息,录入填报的数据,如下图所示: 1.2.2 参数控件 参数面板处可以通过该控件输入多行文本信息,键入查询参数&#…

【车载开发系列】UDS诊断---安全访问服务($0x27)

【车载开发系列】UDS诊断—安全访问服务($0x27) UDS诊断---安全访问服务($0x27【车载开发系列】UDS诊断---安全访问服务($0x27)一.概念定义二.安全控制过程三.报文格式1)请求种子2)发送密钥3)否定响应四.否定响应码列表五.参数定义六.注意事项…

JavaScript基础学习

文章目录什么是JavaScriptJavaScript 运行过程JvaScript 的组成JavaScript的三种书写模式行内式内嵌式外部式JavaScript的输出输出方式输入: prompt输出: alert输出: console.logJavaScript的一些基础语法变量的使用如何理解JS的动态类型(弱类型)基本数据…

SSM整合:mybatis层-P17

首先构建新的项目。 MYSQL: 在mysql中创建我们需要的表 CREATE DATABASE ssmbuild;USE ssmbuild;DROP TABLE IF EXISTS books;CREATE TABLE books ( bookID INT(10) NOT NULL AUTO_INCREMENT COMMENT 书id, bookName VARCHAR(100) NOT NULL COMMENT 书名, bookCo…

【深入浅出Spring原理及实战】「IOC容器初始化」彻底让你明白和理解运行原理和源码流程

前言介绍 本篇文章篇幅较大,希望读者可以慢慢阅读,建议收藏,分多次阅读学习。 学习源码的过程当中,有几点建议: 一定要学会抓重点,归纳核心类、核心方法、核心步骤; 分析源码我们不需要太过于纠…

MongoDB 存储引擎

简单回顾 上次我们说到了关于 mongodb 的集群,分为主从集群和分片集群,对于分片集群中的分片这里需要注意如下几点,一起来回顾一下: 对于热点数据某些分片键(分片键是集合中每个文档中存在的索引字段或复合索引字段&a…

qt历史数据管理模块(模块化程序)功能块复制直接使用不冲突

一、前言 qt对历史数据管理部分个人总结的模块化程序,直接按照步骤复制粘贴程序,直接实现历史数据管理功能,无需花费脑筋在理清各个思路,适合快速编写组装程序 二、环境 windows qt5.7 sqlite3 三、正文 建议参照前文&…

【uni-app】uni-app之云开发uniCloud跨全栈开发笔记总结,包括一个 schema自动生成代码小案例(附详细截图)

1- 前言 本文主要讲解如何使用uni-app 和 uniCloud 云开发,实现小案例,不需要后端,来实现全栈开发。 2- 概念 2.1 什么是uni-app uni-app 是一个使用Vue.js开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、…

对信息系统生命周期各阶段进行风险评估的要点汇总

概述 风险评估应贯穿于评估对象生命周期 各阶段中。评估对象生命周期各阶段中涉及的风险评估原则和方法昆一致的,但由干各阶段实施内容对象、安全需求不同.使得风险评估的对象、目的、要求等各方面也有所不同。在规划设计阶段,通过风险评估以确定评估对…

pytorch笔记(九)转置卷积、膨胀卷积

Transposed Convolution (转置卷积) 别名:Fractionally Strided Convolution (小数步长的卷积)、Deconvolution(逆/反卷积) 作用:upsampling(上采样) 模拟: PS:不是恢复原始值(因为一般情况下矩阵不可逆,无法等式左右两边同乘矩阵的逆得到原始矩阵) 转置卷积的…

为什么分布式系统这么火?

做Java的升职空间有限,可以说如果不想一辈子做程序员,只能往其他方向进行拓展,比如做到产品经理之类的或者技术总监。 可如果还是想做和技术相关的职业,那么架构师是很好的一步。 可是要如何做一名优秀的架构师呢? …