Python · 1 分钟阅读
修改默认配置
把项目从"能跑"调整到"能在中文环境与生产数据库下稳定运行"。
语言与时区
# settings.py
LANGUAGE_CODE = "zh-hans"
TIME_ZONE = "Asia/Shanghai"
USE_I18N = True
USE_TZ = True
USE_TZ = True时,数据库以 UTC 存储时间,由 Django 在读写时按TIME_ZONE转换。这是生产环境的最佳实践。
数据库配置
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "django_bbs",
"USER": "django",
"PASSWORD": os.getenv("DB_PASSWORD"),
"HOST": "127.0.0.1",
"PORT": "3306",
"OPTIONS": {
"charset": "utf8mb4",
"init_command": "SET sql_mode='STRICT_TRANS_TABLES'",
},
"CONN_MAX_AGE": 60, # 连接复用
}
}
驱动安装
uv pip install mysqlclient
macOS 上若编译失败:
brew install mysql pkg-config后重试。
校验连接
python manage.py check --database default
密钥与敏感信息
使用 python-decouple 或 django-environ:
# settings.py
from decouple import config
SECRET_KEY = config("SECRET_KEY")
DEBUG = config("DEBUG", default=False, cast=bool)
DB_PASSWORD = config("DB_PASSWORD")
.env(加入 .gitignore):
SECRET_KEY=xxx
DEBUG=True
DB_PASSWORD=xxx
最佳实践
- ✅ 时区开启
USE_TZ - ✅ 字符集统一
utf8mb4 - ✅ 敏感配置走环境变量
- ✅ 用
STRICT_TRANS_TABLES让 MySQL 拒绝不安全的隐式转换