You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django项目settings.py导入存在的SECRET.py变量仍加载本地配置问题

Django配置动态导入SECRET.py不生效问题解决方案

问题原因

  • 核心原因是路径判断逻辑错误:Path("SECRET.py") 是基于Django运行时的工作目录(通常为项目根目录)查找文件,而非基于settings.py所在的目录查找。即便SECRET.py和settings.py处于同级目录,只要运行时工作目录不是该目录,就会判定文件不存在,进入本地配置分支。
  • 次要排查点:路径修正后如果仍不生效,需确认SECRET.py中是否定义了NAME、USER、PASSWORD、HOST、PORT这几个必填变量,且变量名拼写完全一致。

修复方案

先通过__file__变量获取当前settings.py的所在目录,再拼接SECRET.py的绝对路径做存在性判断,修正后代码如下:

from pathlib import Path

# 获取当前settings.py文件的所在目录
SETTINGS_DIR = Path(__file__).resolve().parent
# 拼接同目录下SECRET.py的绝对路径
SECRET_FILE = SETTINGS_DIR / "SECRET.py"

if SECRET_FILE.is_file():
    print("Live Database")
    from .SECRET import *
else:
    print("Local Database")
    NAME = 'blog_db'
    USER = 'postgres'
    PASSWORD = 'admin'
    HOST = 'localhost'
    PORT = '5432'

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': NAME,
        'USER': USER,
        'PASSWORD': PASSWORD,
        'HOST': HOST,
        'PORT': PORT,
    }
}

内容的提问来源于stack exchange,提问作者Anas Baheh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:45:03