python 项目中的配置和一些常量 写在.env 做隐私保护隔离

配置 写在.env 做隐私保护隔离

需要把数据库 配置,和 secret key 写到 env 文件中,保证,不上传到 git 泄露,以及方便 后续修改配置

  1. 写一个 .env 文件 包含 我们的数据库配置,密钥,以及调试模式配置,在项目根目录创建
bash
复制代码
# 数据库配置 DB_NAME=buddy_mapping_db DB_USER=root DB_PASSWORD= "xxx" DB_HOST=localhost DB_PORT=3306 # Django密钥 SECRET_KEY="xxx" # 调试模式 DEBUG=True
  1. 在项目中引入这个.env 文件,django 项目在 manage.py 引入 因为是项目的入口
python
复制代码
import os import sys from dotenv import load_dotenv def main(): """Run administrative tasks.""" load_dotenv(os.path.join(os.path.dirname(__file__), ".env"))
  1. 在setting.py 导入 这个
python
复制代码
SECRET_KEY = os.getenv("SECRET_KEY") DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", "NAME": os.getenv("DB_NAME"), # 数据库名称 "USER": os.getenv("DB_USER"), # 数据库用户名 "PASSWORD": os.getenv("DB_PASSWORD"), # 数据库密码 "HOST": os.getenv("DB_HOST"), # 数据库主机地址 "PORT": os.getenv("DB_PORT"), "TEST": { "MIRROR": "default", # 关键配置:测试直接使用开发数据库 "DEPENDENCIES": [], # 避免数据库依赖检查 }, } }

进阶方法 使用 pydantic Basesetting类 来管理 环境变量

  1. 项目根目录下创建 config.py 创建 ProjectConfig 类, 并且对应编写.env 文件
python
复制代码
from pydantic_settings import BaseSettings, SettingsConfigDict class ProjectConfig(BaseSettings): # 默认情况下,Pydantic 会将属性名转换为大写并加下划线来查找环境变量: salt: str user_login_state: str db_name: str db_user: str db_password: str db_host: str db_port: str debug: bool secret_key: str # 读取.env 文件 model_config = SettingsConfigDict(env_file=".env")
bash
复制代码
# 数据库配置 DB_NAME= "buddy_mapping_db" DB_USER= "root" DB_PASSWORD= "xxx" DB_HOST= "localhost" DB_PORT= "3306" # Django密钥 SECRET_KEY="xxx" # 调试模式 DEBUG=True # 盐 SALT = "xxx" # session USER_LOGIN_STATE = "user_login_state"
  1. 在项目的 settings.py 里面引入这个类 就可以使用了
python
复制代码
from config import ProjectConfig config = ProjectConfig() # type: ignore DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", "NAME": config.db_name, # 数据库名称 "USER": config.db_user, # 数据库用户名 "PASSWORD": config.db_password, # 数据库密码 "HOST": config.db_host, # 数据库主机地址 "PORT": config.db_port, "TEST": { "MIRROR": "default", # 关键配置:测试直接使用开发数据库 "DEPENDENCIES": [], # 避免数据库依赖检查 }, } }
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP