(四)Flask——配置详解

一、配置:

Flask中的配置文件是一个flask.config.Config对象(继承字典)。后续会剖析源码瞅瞅。

基本方法:

  1. 直接设置配置项——可以直接在应用程序中设置配置项,而不使用配置文件或环境变量。例如,在应用程序中使用以下代码设置配置项:
from flask import Flaskapp = Flask(__name__)
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'GuHanZheIsCool'

开头讲了Config对象继承字典,所以还可以使用app.config.update(…)。

  1. 使用配置文件——将所有的配置项写入一个配置文件中,并通过app.config.from_pyfile()方法导入。例如,在应用程序的根目录下创建一个名为config.py的配置文件,然后使用以下代码导入配置:
from flask import Flaskapp = Flask(__name__)
app.config.from_pyfile('config.py')

config.py配置文件示例:

DEBUG = True
SECRET_KEY = 'GuHanZheIsCool'
DATABASE_URI = 'mysql://user:password@localhost/demodatabase'
  1. 使用环境变量——将配置项以环境变量的形式设置,并通过app.config.from_envvar()方法导入。例如,在终端或命令行中设置环境变量FLASK_CONFIG为配置文件的路径,然后使用以下代码导入配置:
from flask import Flaskapp = Flask(__name__)
app.config.from_envvar('FLASK_CONFIG')
  • 但是,在真实开发时,我们会面临一个问题——一般一个项目会有测试、开发和生产三大环境,这三大环境下的配置会各有不同,比如不同的数据库、不同的cookie配置等。所以Flask为我们提供了一个非常适合开发的解决方法。如下:

真实开发使用的方法:

  • 使用类配置——创建一个配置类,将所有的配置项作为类的属性,并通过app.config.from_object()方法导入。例如,创建一个名为Config的配置类,然后使用以下代码导入配置:
from flask import Flaskapp = Flask(__name__)
# 配置文件              导入settings.py文件里的DevelopmentConfig类对象里的所有配置项
app.config.from_object("settings.DevelopmentConfig")@app.route('/index', methods=['GET', 'POST'])
def index():return 'hello world'if __name__ == '__main__':app.run('localhost', 4000)
  • 同级目录下的settings.py文件:
import osclass BaseConfig(object):"""Base Configuration"""# Root path of projectPROJECT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))DEBUG = TrueSECRET_KEY = 'GuHanZheIsCool'# Redis configurationREDIS_URL = os.environ.get("REDIS_URL")# File settingUPLOAD_FILE_FOLDER = "./project/data"    # 上传文件存储路径FILE_MAX_SIZE = 30 * 1024 * 1024class ProductionConfig(BaseConfig):"""Production Configuration"""DEBUG = Falseclass DevelopmentConfig(BaseConfig):"""Development Configuration"""passclass TestingConfig(BaseConfig):"""Testing Configuration"""pass

在 Flask 中,配置文件通常是一个 Python 模块,其中包含各种 Flask 配置选项的值。以下是 Flask 配置文件中可设置的一些基本选项:

  1. DEBUG: 是否启用调试模式,如果设置为 True,可以在网页中看到详细的错误信息和调试信息。同时会使我们的项目自动重新加载——在调试模式下,如果应用程序的代码发生更改,服务器会自动重新加载应用程序,以便立即反映代码的修改,而无需手动重启服务器。

  2. SECRET_KEY: secret key 是 Flask 中加密cookie所需的密钥,它是加密算法的“种子”,确保加密的安全性。需要保证每个应用程序都有一个固定的密钥,建议使用生成随机密钥的工具生成一个。

  3. SQLALCHEMY_DATABASE_URI: 指定 SQLite、MySQL 或 PostgreSQL 数据库的 URI,表示要连接到的数据库。

  4. SQLALCHEMY_TRACK_MODIFICATIONS: 是否启用 SQLAlchemy 的跟踪修改。默认值是 False。要禁用跟踪修改,可以将其值设置为 False

  5. CACHE_TYPE: 缓存类型,支持 SimpleCache、RedisCache 和 MemcachedCache。

  6. CACHE_DEFAULT_TIMEOUT: 默认缓存时间,单位为秒。

  7. SESSION_TYPE: session类型,支持 Redis、Memcached、Filesystem 等。

  8. SESSION_COOKIE_NAME: session cookie 名称。

  9. SESSION_COOKIE_SECURE: 是否使用安全 cookies,在使用 HTTPS 协议时可以设置为 True

  10. SESSION_PERMANENT: cookie 是否永久有效。

  11. SESSION_FILE_DIR: 文件存储 session 时的保存路径。

  12. UPLOAD_FOLDER: 文件上传时的保存路径。

上面只是Flask 配置文件中的一些基本选项,详细需要查看 Flask 官方文档,了解更多有关配置选项的信息。

以下是Flask官方文档中关于配置项的一些开发中常需查询的链接:

  • Flask配置文档:https://flask.palletsprojects.com/en/2.0.x/config/
  • Flask配置字典的说明:https://flask.palletsprojects.com/en/2.0.x/api/#configuration
  • Flask开发服务器配置选项:https://flask.palletsprojects.com/en/2.0.x/server/
  • Flask应用程序的配置模式:https://flask.palletsprojects.com/en/2.0.x/patterns/appfactories/
  • Flask-WTF扩展的配置选项:https://flask-wtf.readthedocs.io/en/0.15.x/config.html

在这些文档中,有Flask配置项的详细说明和示例。提供了关于如何设置和使用配置项的详细说明,以及每个配置项的作用和默认值。

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

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

相关文章

用ChatGPT解析Wireshark抓取的数据包样例

用Wireshark抓取的数据包,常用于网络故障排查、分析和应用程序通信协议开发。其抓取的分组数据结果为底层数据,看起来比较困难,现在通过chatGPT大模型,可以将原始抓包信息数据提交给AI进行解析,本文即是进行尝试的样例…

互联网行业真的不行了吗?

文章目录 前言一、起因二、互联网真的完了吗?三、是不是要转行?四、十年磨一剑五、统一回复 前言 英雄算法联盟 - 七月集训 已经开始 16 天,八月算法集训 将于 08月01日 正式开始,目前已经提前开始报名,报名方式参见&a…

OpenCv之滤波器

目录 一、卷积 二、方盒滤波与均值滤波 三、高斯滤波 四、中值滤波 五、双边滤波 一、卷积 图像卷积就是卷积核在图像上按行华东遍历像素时不断的相乘求和的过程 相关知识点: 步长:就是卷积核在图像上移动的步幅.(为充分扫描图片,步长一般为1)padding:指在图片…

matlab学习指南(1):matlab初步入门详细介绍

🌅*🔹** φ(゜▽゜*)♪ **🔹*🌅 欢迎来到馒头侠的博客,该类目主要讲数学建模的知识,大家一起学习,联系最后的横幅! 喜欢的朋友可以关注下,私信下次更新不迷路&#xff0…

sqlite3交叉编译

1、交叉编译sqllite3可以先从官网下载最新最新的源码进行编译。sqlite3下载sqlite3有两种版本的源代码,sqlite-amalgamation-3420000.zip这种是将所有的操作放到sqlite3中进行使用的。虽然官方推荐使用这种方法。但是对于嵌入式移植还是使用sqlite-autoconf-3420000…

探索基于300W-LP的3D人脸关键点检测

目录 前言一、3D 关键点可视化二、使用步骤1.300W-LP转为YOLO数据格式2.修改数据入口3.开始训练 总结 前言 300WLP数据集提供来丰富的人脸线索,包括2D或3D的关键点信息,Head Angle和3DMM的参数等&#xff…

OpenCV中的RGB与YUV转换

1 基本概念 YUV 颜色空间从模拟电视时代开始就被广泛应用于彩色图像的转换与处理。其基于一个 3x3 的矩阵,通过线性变换将 RGB 像素转换为一个亮度(Luma)分量 Y 以及两个色度(Chroma)分量 U 和 V。由于模拟电视存在着多…

Java如何使用Fastjson序列化和反序列化

技数未来 各种数据库等知识文章 Fastjson是阿里巴巴开源的一个高性能的JSON处理框架,它可以实现Java对象与JSON字符串之间的相互转换,支持复杂对象嵌套和泛型的序列化与反序列化。Fastjson具有以下特点: 1. 快速:Fastjson相对于…

K8s 为什么要弃用 Docker

K8s 为什么要弃用 Docker 最近在学习容器技术的过程中,看到有关于Kubernetes“弃用 Docker”的事情,担心现在学 Docker 是否还有价值,是否现在就应该切换到 containerd 或者是其他 runtime。 随着深入了解,这些疑虑的确是有些道理…

libbpf-bootstrap开发指南:socket 监测与过滤 - sockfilter

目录 代码分析 comm 数据部分 BPF 代码部分 功能说明 rb 结构分析 ip_is_fragment 函数分析 bpf_skb_load_bytes函数分析 GRE协议说明 用户代码部分 功能说明 open_raw_sock& 原始套接字 setsockopt(sock, SOL_SOCKET, SO_ATTACH_BPF, &prog_fd, sizeof(pr…

git 工具使用--分支管理

git 工具使用–分支管理 文章目录 git 工具使用--分支管理理解分支创建分支切换分支合并分支删除分支合并冲突分支管理策略分支策略bug分支删除临时分支总结 理解分支 分支管理是Git的杀手级功能之一。分支:就是科幻中的平行宇宙,当你正在电脑面前学习C…

设计模式-单例模式

面向对象语言讲究的是万物皆对象。通常流程是先定义可实例化类,然后再通过各种不同的方式创建对象,因此类一般可以实例化出多个对象。但是实际项目开发时,我们还是希望保证项目运行时有且仅包含一个实例对象。这个需求场景的出发点包括但不限…

变压器试验介质损耗

试验目的 介质损耗因数 tanδ (% ) 是判断变压器绝缘状态的一种较有效的手段, 主要用来检 查变压器整体受潮、 油质劣化及严重的局部缺陷等, 但不一定能发现变压器局部受潮 等集中性局部缺陷。 试验设备 异频介质损耗测试仪 厂家: 湖北众拓高试 试验接线 (1) 介…

搜索引擎elasticsearch :安装elasticsearch (包含安装组件kibana、IK分词器、部署es集群)

文章目录 安装elasticsearch1.部署单点es1.1.创建网络1.2.加载镜像1.3.运行 2.部署kibana2.1.部署2.2.DevTools2.3 分词问题(中文不友好) 3.安装IK分词器3.1.在线安装ik插件(较慢)3.2.离线安装ik插件(推荐)1)查看数据卷…

数据结构--哈夫曼树

数据结构–哈夫曼树 带权路径长度 结点的 权 \color{red}权 权:有某种现实含义的数值(如:表示结点的重要性等) 结点的带权路径长度 \color{red}结点的带权路径长度 结点的带权路径长度:从树的根到该结点的路径长度(经过的边数)与该结点上权值的乘积 树的…

小程序MobX创建store并实现全局数据共享

查看小程序根目录中是否存在package.json文件 在项目根目录运行cmd 没有package.json文件输入npm init -y初始化一下,初始化一个包管理 安装MobX npm install --save mobx-miniprogram4.13.2 mobx-miniprogram-bindings1.2.1 小程序菜单栏工具–构建npm 根目录创建store文…

el-ment ui 表格组件table实现列的动态插入功能

在实际需求中我们经常遇到各种奇葩的需求,不足为奇。每个项目的需求各不相同,实现功能的思路大致是一样的。 本文来具体介绍怎么实现table表格动态插入几列。 首先实现思路有2种, 1. 插入的位置如果是已知的,我知道在哪个标题的…

设计模式之建造者设计模式

写在前面 不知道,你在工作中有没有使用过lombok,如果你使用过,不知道你有没有使用过其中的Builder注解,其就会帮我们生成建造者设计模式相关的代码,本文就一起来看下吧! 1:介绍 1.1&#xff…

spark启动HA时workers为0,且为standby状态

今天学习一个spark视频,在启动StandAloneHa模式的时候,发现workers为0,而且spark两个master的状态都为standby,找了很久,才知道我用的spark3.2 最低支撑的zookeeper版本为3.5.x,而且zookeeper的安装包是需要带bin的那个…

Selenium 获取接口响应数据

目录 前言 seleniumwire简介 功能 兼容性 目录 安装 创建webdriver 获取请求 请求对象 限制请求捕获 前言 有时候需要知道UI界面操作的同时接口响应数据是否正常,这时就需要获取接口响应数据。Selenium本身没有获取接口响应的api,但是可以通过…