Django settings詳解
1.基礎
DJANGO_SETTING_MODULE環境變量:讓settings模塊被包含到python可以找到的目錄下,開發情況下不需要,我們通常會
在當前文件夾運行,python可以搜索到。如果需要運行在其他服務器上,就必須指定DJANGO_SETTINGS_MODULE變量。
2.默認設定
一個django的settings文件不需要我們手動去設置所有項目,因為系統已經默認設置好了。我們只需要修改我們使用的設
定就好了。默認的設置在django/conf/global_settings.py文件中。django在編譯時,先載入global_settings.py中的配
置,然后加載指定的settings文件,重寫改變的設定。
3.如何查看你所修改的setting?
django提供了一個簡單的方法來展示你的setting和默認的setting的不同。在項目根目錄下運行python manage.py
diffsettings,它將顯示當前設定和django默認設定的不同之處。
如果當前的setting中出現了django默認的設定中沒有的項,那么項目的最后會有“###”字符串。例如,默認的setting
沒有定義ROOT_URLCONF,所以,ROOT_URLCONF的后面會跟上一個“###”字符串。
4.如何訪問settings文件?
在其他module中,如果希望訪問settings文件,可以使用from django.conf import settings來導入。
使用方法,例如:settings.DEBUG
注意:
1.django.conf.settings不是一個模塊!它是一個對象。所以,我們沒辦法這樣使用:
from django.conf.settings import DEBUG #錯誤!
2.不要導入global_settings或者我們自己寫的settings。因為,django.conf.setting提取了global_settings和我們自
己寫的settings里面的內容。相比直接導入自己寫的settings文件和global_settings文件,它提供給我們的是一個接口
。可以實現解耦的作用。
5.不要再運行時修改你的settings設定!(出於安全考慮)
6.安全
因為settings文件包含了敏感的信息,比如數據庫密碼等。所以我們需要限制程序對這個文件的訪問。
7.有效的settings項目
詳見django的settings詳解(2)
8.創建自己的settings設置
我們可以隨意設置自己的settings,只需要遵守兩點:
1.setting的名字必須為大寫
2.不要重新使用已經存在的setting
9.不使用DJANGO_SETTINGS_MODULE變量。
不常用,我們可以使用:
django.conf import settings
settings.configure(DEBUG=True,...)
這種方法可以繞開DJANGO_SETTINGS_MODULE環境變量,不需要指向一個settings文件。
注意:它和DJANGO_SETTINGS_MODULE不能同時出現。
10.使用自己的默認settings
如果不想使用系統自定義的django.conf.global_settings,那么可以使用如下方法:
from django.conf import settings
from myapp import myapp_defaults
settings.configure(default_settings=myapp_defaults,DEBUG=True)
一般情況下,我們最好使用默認的settings,因為他適合大多數情況。