将应用程序中的 Django 设置导入项目设置?

Import Django settings from app into project settings?

我有几个项目都使用 'shared_app'。在那个 shared_app 中,我有一个名为 default_settings.py 的模块,其中包含 所有 项目使用的设置,这些项目具有 shared_app.

文件夹结构是通常的Django结构:

project_dir
 |
 - project_dir
    |
    - settings.py
    - urls.py
    - wsgi.py
 - shared_app
    |
    - default_settings.py
    - ... all other app files ...
 - other_app
 - some_other_app
 - ...other project files....

在我的 project_dir/settings.py 中有这些行:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

exec(
    open(os.path.join(BASE_DIR, "shared_app", "default_settings.py")).read()
) in globals()

# Below this line - I can use any settings from default_settings.py 

if DEBUG:
    SESSION_EXPIRE_AT_BROWSER_CLOSE = False

default_settings.py 文件包含如下内容:

DEBUG = is_debug(os.environ.get("DJANGO_DEBUG"))

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY")

SESSION_EXPIRE_AT_BROWSER_CLOSE = True

default_settings.py 中的设置实在是太多了,以至于 from share_app import THIS, THAT, OTHER 大约有 20-30 个设置。

有更好的方法吗?还是我坚持使用那个有点令人困惑、丑陋的 exec() 命令?还有什么吗'pythonic'?

如果我理解正确的话,你可以这样做:

from share_app import *