R / Richie全部文章 ↑

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 拒绝不安全的隐式转换