配置说明
配置文件位于项目根目录 .env 文件和 config/settings/ 目录。
配置文件
youlai-django/
├── .env # 本地环境变量(开发环境)
├── config/
│ └── settings/
│ ├── base.py # 基础配置
│ ├── dev.py # 开发环境配置
│ └── prod.py # 生产环境配置
└── manage.py # Django 管理入口配置加载
加载顺序
- 开发环境:读取
.env文件 - 生产环境:通过系统环境变量注入
环境切换
bash
# 开发环境
export DJANGO_SETTINGS_MODULE=config.settings.dev
# 生产环境
export DJANGO_SETTINGS_MODULE=config.settings.prodDjango 核心配置
env
# Django 配置
DJANGO_SETTINGS_MODULE=config.settings.dev
DJANGO_SECRET_KEY=django-insecure-dev-key-change-in-production| 配置项 | 默认值 | 说明 |
|---|---|---|
DJANGO_SETTINGS_MODULE | config.settings.dev | 配置模块 |
DJANGO_SECRET_KEY | - | Django 密钥 |
DJANGO_ALLOWED_HOSTS | localhost | 允许的主机 |
数据库配置
env
# MySQL 数据库
DB_HOST=127.0.0.1
DB_PORT=3306
DB_NAME=youlai_admin_django
DB_USER=root
DB_PASSWORD=123456| 配置项 | 默认值 | 说明 |
|---|---|---|
DB_HOST | localhost | MySQL 主机 |
DB_PORT | 3306 | MySQL 端口 |
DB_NAME | youlai_admin_django | 数据库名称 |
DB_USER | root | 数据库用户名 |
DB_PASSWORD | - | 数据库密码 |
Redis 配置
env
# Redis 配置
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0| 配置项 | 默认值 | 说明 |
|---|---|---|
REDIS_HOST | localhost | Redis 主机 |
REDIS_PORT | 6379 | Redis 端口 |
REDIS_PASSWORD | - | Redis 密码 |
REDIS_DB | 0 | 数据库编号 |
JWT 配置
env
# JWT 配置
SESSION_TYPE=jwt
JWT_ACCESS_TOKEN_LIFETIME=7200
JWT_REFRESH_TOKEN_LIFETIME=604800
JWT_SECRET_KEY=your-secret-key| 配置项 | 默认值 | 说明 |
|---|---|---|
SESSION_TYPE | jwt | 会话类型(jwt/redis-token) |
JWT_ACCESS_TOKEN_LIFETIME | 7200 | 访问 Token 有效期(秒) |
JWT_REFRESH_TOKEN_LIFETIME | 604800 | 刷新 Token 有效期(秒) |
JWT_SECRET_KEY | - | JWT 签名密钥 |
会话模式
| 模式 | 说明 | 适用场景 |
|---|---|---|
jwt | 无状态,Token 自包含信息 | 微服务、分布式 |
redis-token | 有状态,Token 存储在 Redis | 需要会话治理 |
OSS 配置
env
# OSS 类型:minio | aliyun | local
OSS_TYPE=minio
# MinIO 配置
MINIO_HOST_PORT=http://localhost:9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET_NAME=public
# 阿里云 OSS 配置
ALIYUN_OSS_ENDPOINT=oss-cn-hangzhou.aliyuncs.com
ALIYUN_OSS_ACCESS_KEY_ID=
ALIYUN_OSS_ACCESS_KEY_SECRET=
ALIYUN_OSS_BUCKET_NAME=定时任务配置
env
# XXL-Job 定时任务
XXL_JOB_ENABLED=false
XXL_JOB_ADMIN_ADDRESSES=http://127.0.0.1:8686/xxl-job-admin
XXL_JOB_ACCESS_TOKEN=default_token
XXL_JOB_EXECUTOR_APP_NAME=xxl-job-executor-youlai-django
XXL_JOB_EXECUTOR_PORT=9999配置读取
在代码中读取
python
import os
from dotenv import load_dotenv
# 加载 .env 文件
load_dotenv()
# 读取环境变量
db_host = os.environ.get('DB_HOST', 'localhost')
redis_host = os.environ.get('REDIS_HOST', 'localhost')Django Settings
python
# config/settings/base.py
import os
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': os.environ.get('DB_HOST', 'localhost'),
'PORT': os.environ.get('DB_PORT', '3306'),
'NAME': os.environ.get('DB_NAME', 'youlai_admin'),
'USER': os.environ.get('DB_USER', 'root'),
'PASSWORD': os.environ.get('DB_PASSWORD', ''),
}
}环境差异
开发环境(dev.py)
- 读取
.env文件 - DEBUG = True
- SQL 日志开启
生产环境(prod.py)
- 不读取
.env,使用系统环境变量 - DEBUG = False
- 安全配置强化
相关文件
| 文件 | 说明 |
|---|---|
.env | 本地环境变量 |
config/settings/base.py | 基础配置 |
config/settings/dev.py | 开发环境配置 |
config/settings/prod.py | 生产环境配置 |
