![](/img/trans.png)
[英]How to import a Django project settings.py Python file from a sub-directory?
[英]how to import the custormed settings.py variable in django project?
我在Django項目中使用客戶設置,就像在manage.py中一樣。 我寫:
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "setting.windows")
...
當我運行代碼時,我想以不同的設置運行程序:
python manage.py runserver --settings=twoscoops.settings.local
在我的settings.py中,我還添加了一些我的私有程序變量,不同的settings.py使用了不同的變量。 如果我的models.py或其他類文件要導入在我的設置文件中定義的那些變量。 如何寫進口聲明?
我的意思是
import twoscops.settings.local
使用其他設置時,我可能會更改環境變量。 怎么做?
一種有效的方法實際上是在操作系統中設置環境變量,然后在environment
模塊中的Python代碼中檢查它(如下所示)。
注意:在目錄結構方面,請使用適合您的方法-我將<my app>/conf/envs/<some env>.py
用於特定於環境的設置
# twoscoops/conf/envs/current.py
"""
Imports the proper settings, based on the deployment environment's name (set
as an environment variable), defaulting to local settings.
"""
import os
from django.core.exceptions import ImproperlyConfigured
# Environments (these can be called anything you want)
ENV_LOCAL = 'local'
ENV_PROD = 'prod'
DEPLOYMENT_ENVS = (ENV_LOCAL, ENV_PROD)
# Get the deployment environment's name from the os environment
DEPLOYMENT_ENV = os.getenv('DJANGO_DEPLOYMENT_ENV', ENV_LOCAL)
# Ensure the deployment env's name is valid
if DEPLOYMENT_ENV not in DEPLOYMENT_ENVS:
raise ImproperlyConfigured(
u'Invalid `DJANGO_DEPLOYMENT_ENV`: {d}'.format(d=DEPLOYMENT_ENV)
)
# Import env-specific settings
if DEPLOYMENT_ENV == ENV_LOCAL:
# Local, native testing
from twoscoops.conf.envs.local import *
if DEPLOYMENT_ENV == ENV_PROD:
# Production
from twoscoops.conf.envs.prod import *
只需from twosscoops.conf.envs.current import *
添加到每個主要設置模塊中(您可能只有一個,或者可能有一個用於API,一個用於網站,等等)。
您會注意到上面的示例默認為twoscoops.conf.envs.local
。 當您想使用另一個環境(在我的示例中,只有prod
和local)時,只需在啟動外殼程序或服務器之前(或在啟動uWSGI等之前的Upstart腳本中)添加DJANGO_DEPLOYMENT_ENV
環境變量,如下所示:
you@your-server$ export DJANGO_DEPLOYMENT_ENV=prod
you@your-server$ python manage.py shell
在Windows中,您也可以設置環境變量(我相信在命令行中也可以通過GUI-Google會知道更多)。
您也可以為本地開發作弊,只需將export DJANGO_VARIABLE=value-of-variable
放在虛擬環境的activate
腳本的末尾即可。
請注意,在生產中,您需要在Apache vhost配置中放入類似的內容(我確定它與nginx類似):
SetEnv DJANGO_VARIABLE value-of-variable
請注意,vhost配置中的變量名稱和值之間沒有等號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.