Python 是否将应用程序中的Django设置导入项目设置?
我有几个项目都使用“共享应用程序”。在该共享应用程序中,我有一个名为Python 是否将应用程序中的Django设置导入项目设置?,python,python-3.x,django,settings,Python,Python 3.x,Django,Settings,我有几个项目都使用“共享应用程序”。在该共享应用程序中,我有一个名为default\u settings.py的模块,其中包含拥有该共享应用程序的所有项目所使用的设置 文件夹结构是常用的Django结构: project_dir | - project_dir | - settings.py - urls.py - wsgi.py - shared_app | - default_settings.py - ... all other
default\u settings.py
的模块,其中包含拥有该共享应用程序的所有项目所使用的设置
文件夹结构是常用的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....
在myproject\u 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\u 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\u settings.py
中的设置太多,无法从share\u应用程序导入类似于的内容。其他的设置大约有20-30个
有更好的方法吗?还是我一直在使用那个稍微令人困惑、难看的exec()
命令?如果我没弄错的话,你还能做些什么
from share_app import *
从某处。默认设置导入*
?请注意,通常不建议这样做,因为您不知道导入了哪些名称,但这至少在settings.py
的情况下有效。是的,我的linter不喜欢它-但我认为这样做可能会有效-尽管我的linter不太喜欢它。