Files
djangoadmin-wiki/DjangoAdmin_Django_AntdVue/zh/volume1/env-vars.md
T
2026-09-13 17:33:13 +08:00

276 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 环境变量速查表
本章节汇总了项目 `.env` 文件中所有可配置的环境变量,按功能分类整理。所有变量均可在 `.env` 文件中找到示例。
:::tip 温馨提示
1. `.env` 文件包含项目的敏感配置信息,已被 `.gitignore` 忽略,不会提交到版本控制。
2. 环境变量通过 `config/env.py` 加载,使用 `python-dotenv` 库从 `.env` 文件读取。
3. `.env` 中的值会覆盖 `config/env.py` 中的默认值。
:::
## 应用基础配置
| 变量名 | 默认值 | 说明 |
|:----|:----|:----|
| `DJANGO_NAME` | `Django+EleVue旗舰版` | 应用名称,用于界面显示和系统标识 |
| `DJANGO_VERSION` | `v3.0.0` | 应用版本号 |
| `DJANGO_DEBUG` | `True` | 是否开启调试模式。`True` 时输出详细错误堆栈,生产环境务必设为 `False` |
| `DJANGO_DEMO` | `True` | 是否开启演示模式。`True` 时所有写操作(add/update/delete/status)返回"演示环境,暂无操作权限"。**开发调试时请设为 `False`** |
| `DJANGO_UPLOAD_DIR` | `项目根目录/public/uploads` | 文件上传存储路径 |
| `DJANGO_FILE_URL` | `http://file.django.elevue` | 文件访问域名,用于拼接上传文件的访问 URL |
:::tip 安全提示
1. 生产环境务必设置 `DJANGO_DEBUG=False`,调试模式会输出详细的错误堆栈信息,可能泄漏内部实现细节。
2. `DJANGO_DEMO` 代码默认值为 `True`(演示模式),开发调试时需设为 `False` 才能执行写操作。
:::
## 数据库配置
| 变量名 | 默认值 | 说明 |
|:----|:----|:----|
| `DATABASE_ENGINE` | `django.db.backends.mysql` | 数据库引擎。支持:`mysql`、`postgresql`、`sqlite3`、`oracle`、`mssql` |
| `DATABASE_NAME` | `djangoadmin.django.elevue` | 数据库名称。SQLite 时作为数据库文件路径 |
| `DATABASE_HOST` | `127.0.0.1` | 数据库地址 |
| `DATABASE_PORT` | `3306` | 数据库端口 |
| `DATABASE_USER` | `root` | 数据库账号 |
| `DATABASE_PASSWORD` | `root` | 数据库密码 |
| `DATABASE_PREFIX` | `django_` | 数据表前缀,便于识别和多应用共存 |
:::tip 多数据库支持
`DATABASE_ENGINE` 支持 Django 原生数据库引擎和第三方引擎(`mssql-django`)。切换引擎后需安装对应的 Python 驱动包。
:::
## Redis 缓存配置
| 变量名 | 默认值 | 说明 |
|:----|:----|:----|
| `REDIS_HOST` | `127.0.0.1` | Redis 服务地址 |
| `REDIS_PORT` | `6379` | Redis 服务端口 |
| `REDIS_PASSWORD` | `123456` | Redis 密码 |
| `REDIS_DB` | `0` | Redis 库索引(0-15) |
:::tip 温馨提示
Redis 用于存储验证码、JWT 令牌黑名单等功能,是项目正常运行的必需服务。缓存 Key 前缀为 `djangoadmin`。
:::
## IP 地理位置配置
| 变量名 | 默认值 | 说明 |
|:----|:----|:----|
| `IP_LOCATION_SOURCE` | `api` | IP 地理位置信息来源。`local` - 本地数据库,`api` - 在线 API |
| `IP_DATABASE_PATH` | `data/qqwry.ipdb` | 本地 IP 数据库文件路径。支持格式:`.ipdb`、`.dat`、`.mmdb` |
| `IP_API_TIMEOUT` | `5` | IP 查询 API 超时时间(秒) |
| `IP_CACHE_ENABLED` | `True` | 是否启用 IP 地理位置缓存 |
| `IP_CACHE_TIMEOUT` | `86400` | IP 缓存时间(秒),默认 1 天 |
## 短信服务配置
| 变量名 | 默认值 | 说明 |
|:----|:----|:----|
| `SMS_PROVIDER` | `mock` | 短信服务商:`mock`(模拟)、`aliyun`(阿里云)、`tencent`(腾讯云)、`huawei`(华为云) |
### 阿里云短信
| 变量名 | 默认值 | 说明 |
|:----|:----|:----|
| `ALIYUN_ACCESS_KEY_ID` | (空) | 阿里云 AccessKey ID |
| `ALIYUN_ACCESS_SECRET` | (空) | 阿里云 AccessKey Secret |
| `ALIYUN_SMS_SIGN` | (空) | 阿里云短信签名 |
| `ALIYUN_REGION` | `cn-hangzhou` | 阿里云短信区域 |
| `ALIYUN_SMS_TEMPLATE_CODE` | (空) | 阿里云短信模板 ID |
### 腾讯云短信
| 变量名 | 默认值 | 说明 |
|:----|:----|:----|
| `TENCENT_SECRET_ID` | (空) | 腾讯云 SecretId |
| `TENCENT_SECRET_KEY` | (空) | 腾讯云 SecretKey |
| `TENCENT_SMS_APP_ID` | (空) | 腾讯云短信应用 ID |
| `TENCENT_SMS_SIGN` | (空) | 腾讯云短信签名 |
| `TENCENT_SMS_TEMPLATE_ID` | (空) | 腾讯云短信模板 ID |
| `TENCENT_REGION` | `ap-guangzhou` | 腾讯云区域 |
### 华为云短信
| 变量名 | 默认值 | 说明 |
|:----|:----|:----|
| `HUAWEI_ACCESS_KEY` | (空) | 华为云 AccessKey |
| `HUAWEI_SECRET_KEY` | (空) | 华为云 SecretKey |
| `HUAWEI_SMS_APP_KEY` | (空) | 华为云短信应用 Key |
| `HUAWEI_SMS_SIGN` | (空) | 华为云短信签名 |
| `HUAWEI_SMS_CHANNEL` | `default` | 华为云短信通道 |
| `HUAWEI_REGION` | `cn-north-4` | 华为云区域 |
:::tip 温馨提示
短信功能为预留扩展配置,默认使用 `mock` 模式(不实际发送短信)。
:::
## 邮件服务配置
| 变量名 | 默认值 | 说明 |
|:----|:----|:----|
| `EMAIL_PROVIDER` | `console` | 邮件服务商:`console`(控制台输出)、`smtp`(真实发送) |
| `EMAIL_HOST` | (空) | SMTP 服务器地址 |
| `EMAIL_PORT` | `587` | SMTP 服务端口 |
| `EMAIL_USE_TLS` | `True` | 是否启用 TLS 加密 |
| `EMAIL_HOST_USER` | (空) | 发件邮箱账号 |
| `EMAIL_HOST_PASSWORD` | (空) | 邮箱授权码(不是登录密码) |
| `DEFAULT_FROM_EMAIL` | (空) | 默认发件人邮箱 |
:::tip 温馨提示
邮件功能为预留扩展配置,默认使用 `console` 模式(输出到控制台)。常见邮箱 SMTP 配置:
- QQ 邮箱:`smtp.qq.com`,端口 `587`(TLS)或 `465`(SSL)
- 163 邮箱:`smtp.163.com`,端口 `465`(SSL)
- Gmail:`smtp.gmail.com`,端口 `587`(TLS)
:::
## 定时任务配置
| 变量名 | 默认值 | 说明 |
|:----|:----|:----|
| `JOB_THREAD_POOL_SIZE` | `10` | 定时任务线程池大小(同时处理的异步任务数量) |
| `JOB_EXECUTE_TIMEOUT` | `30` | 任务执行超时时间(秒) |
| `JOB_LOG_ENABLED` | `True` | 是否记录任务执行日志 |
| `JOB_RETRY_TIMES` | `3` | 任务执行失败重试次数 |
| `JOB_RETRY_INTERVAL` | `60` | 任务执行失败重试间隔(秒) |
## 环境变量配置示例
以下是一个开发环境的 `.env` 文件示例:
```bash
# ============================================================
# 应用配置
# ============================================================
DJANGO_NAME=Django+EleVue旗舰版
DJANGO_VERSION=v3.0.0
DJANGO_DEBUG=True
DJANGO_DEMO=False # 代码默认True(演示模式),开发环境设为False以启用写操作
DJANGO_UPLOAD_DIR="E:\DjangoAdmin_Django_AntdVue\public\uploads"
DJANGO_FILE_URL='http://file.django.antdvue'
# ============================================================
# 数据库配置
# ============================================================
DATABASE_ENGINE="django.db.backends.mysql"
DATABASE_NAME='djangoadmin.django.elevue'
DATABASE_HOST="127.0.0.1"
DATABASE_PORT=3306
DATABASE_USER="root"
DATABASE_PASSWORD="your_password" # 请修改为实际密码
DATABASE_PREFIX="django_"
# ============================================================
# Redis 配置
# ============================================================
REDIS_HOST="127.0.0.1"
REDIS_PORT=6379
REDIS_PASSWORD="your_redis_password" # 请修改为实际密码
REDIS_DB=0
# ============================================================
# 站点域名配置
# ============================================================
SITE_DOMAIN="http://localhost:8000"
```
:::danger 安全提醒
1. 真实 `.env` 文件包含敏感信息(数据库密码等),已被 `.gitignore` 忽略,请勿提交到版本控制。
2. 生产环境务必设置 `DJANGO_DEBUG=False`。
3. `DJANGO_DEMO` 代码默认值为 `True`(演示模式),开发调试时需设为 `False` 才能执行写操作。
:::
## .env 加载机制
项目通过 `extends/extends_dotenv.py` 模块实现 `.env` 文件的自动加载。该模块在 Django 启动时最先执行,将 `.env` 中的键值对注入到系统环境变量中,后续 `config/env.py` 通过 `os.getenv()` 读取。
### 加载流程
```
Django 启动
│
▼
application/settings.py
│ from extends.extends_dotenv import env_path ← 触发加载
│ from config.env import * ← 读取环境变量
▼
extends/extends_dotenv.py
│ 1. 定位项目根目录
│ 2. 拼接 .env 文件路径
│ 3. 调用 load_dotenv(env_path) 注入环境变量
▼
config/env.py
│ os.getenv('DJANGO_NAME', 'Django+EleVue旗舰版')
│ os.getenv('DATABASE_HOST', '127.0.0.1')
│ ...(所有配置项)
▼
各模块通过 from config.env import * 使用配置
```
### 加载优先级
配置值的优先级从高到低为:
1. **系统环境变量**:操作系统级别设置的环境变量
2. **`.env` 文件**:项目根目录下的 `.env` 文件
3. **代码默认值**:`config/env.py` 中 `os.getenv()` 的第二个参数
```python
# 示例:DJANGO_DEBUG 的优先级
# 1. 系统环境变量 DJANGO_DEBUG(最高优先级)
# 2. .env 文件中的 DJANGO_DEBUG=True
# 3. 代码默认值 'True'(最低优先级)
DJANGO_DEBUG = (os.getenv('DJANGO_DEBUG', 'True') == 'True')
```
:::tip 温馨提示
`extends/extends_dotenv.py` 使用 `python-dotenv` 库的 `load_dotenv()` 函数,默认**不会覆盖**已存在的系统环境变量。如果需要强制覆盖,可使用 `load_dotenv(env_path, override=True)`。
:::
## 应用常量配置
除了 `.env` 环境变量外,项目还在 `constant/constants.py` 中定义了一些全局常量,用于控制应用的默认行为。
### 常量列表
| 常量名 | 类型 | 默认值 | 说明 |
|:----|:----|:----|:----|
| `PAGE_SIZE` | int | `10` | 分页查询默认每页记录数 |
| `DEFAULT_PASSWORD` | str | `"123456"` | 新建用户或重置密码时的默认密码 |
| `MESSAGE_OK` | str | `"操作成功"` | 统一的成功响应消息 |
| `MESSAGE_FAIL` | str | `"操作失败"` | 统一的失败响应消息 |
### 使用方式
```python
# 在 services.py 中使用分页常量
from constant.constants import PAGE_SIZE
def get_example_page(request):
page_size = int(request.GET.get('pageSize', PAGE_SIZE))
...
# 在 R.py 中使用消息常量
from constant.constants import MESSAGE_OK, MESSAGE_FAIL
def ok(data=None, msg=MESSAGE_OK, code=0, **kwargs):
...
```
### 与环境变量的区别
| 维度 | 环境变量(`.env`) | 应用常量(`constants.py`) |
|:----|:----|:----|
| 配置方式 | `.env` 文件或系统环境变量 | 直接修改 Python 源码 |
| 是否需要重启 | 修改 `.env` 后需重启服务 | 修改后需重启服务 |
| 适用场景 | 数据库连接、密钥、服务地址等**部署相关**配置 | 分页大小、默认密码、消息文本等**业务相关**常量 |
| 安全性 | `.env` 已被 `.gitignore` 忽略 | 代码内,提交到版本控制 |
:::tip 温馨提示
如果需要修改常量值,直接编辑 `constant/constants.py` 文件即可。修改后需重启 Django 服务才能生效。
:::
## 总结
本章节汇总了项目所有可配置的环境变量,涵盖应用基础配置、数据库、Redis、IP 地理位置、短信、邮件和定时任务等功能模块。通过合理配置这些变量,可以灵活调整项目的运行参数,适应不同的开发、测试和生产环境需求。首次使用时仅修改数据库和 Redis 的连接信息即可快速启动项目。