下面對 settings.py 配置檔案涉及到的知識點進行依次講解:
它用于綁定目前項目 BookStore 所在的絕對路徑,項目中的所有的檔案都需要依賴此路徑,綁定路徑的方法如下:
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
<code>__file__</code>是 Python 的文法,顯示目前檔案的位置,<code>os.path.abspath(__file__)</code> 方法傳回目前檔案的絕對路徑。
這個變量的本質是一個加密的鹽,它一般配合加密算法 Hash、MD5 一起使用。例如使用者密碼的加密或者建立會話時用到的 sessionid 都需要用到 SECRET_KEY 。在實際的開發工作中,一般将它儲存在系統的環境變量中以確定加密鹽的安全。
用于配置 Django 項目的啟用模式,有兩種取值方式:
DEBUG = True用于在開發環境中使用,屬于調試模式,在項目的運作過程中會暴露一些錯誤資訊以友善調試。
DEBUG = False用于線上環境,表示不啟用調試模式。
用于配置能夠通路目前站點的域名(IP位址),當 DEBUG = False 時,必須填寫,有以下三種使用方法:
[],空清單,表示隻有1217.0.0.1,localhost能通路本項目;
['*'],表示任何網絡位址都能通路到目前項目;
['192.168.1.3', '192.168.3.3'] 表示隻有目前兩個主機能通路目前項目。
提示:如果是在區域網路,讓其它主機也能通路此站點,應使用 ALLOWED_HOSTS=['*'] 的方式。
這個參數是指目前項目中用來安裝的應用(APP)的清單,Django 把預設自帶的應用放在這個清單裡,比如 Admin 背景應用、Auth 使用者管理系統等,前面我們也對這兩個子產品做了相應的介紹,在 Django 中把它們稱之為“應用”。
我們可以根據自己的項目需求對其進行增加或删除,比如公司要單獨開發一個背景管理系統,就可以把第一項 admin 注釋掉。開發時自己編寫的應用都必須在這個變量表中進行注冊才能生效。是以這個清單需要經常的改動。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
它用于注冊中間件,我們在《Django中間》中進行了介紹,Django 預設加載了一些中間件。例如,用于處理會話的 SessionMiddleware 等,同樣我們可以對這些中間件進行添加或者注釋。
ROOT_URLCONF = 'BookStore.urls'
它指定了目前項目的根 URL,是 Django 路由系統的入口。
它用于指定模闆的配置資訊,清單中每一進制素都是一個字典。如下所示是 Django 預設自帶模闆引擎:
{'BACKEND':'django.template.backends.django.DjangoTemplates'
WSGI_APPLICATION = 'BookStore.wsgi.application'
項目部署時,Django 的内置伺服器将使用的 WSGI 應用程式對象的完整 Python 路徑。
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
它用于指定資料庫配置資訊,這裡預設配置的是 Django 自帶的 sqllite3 資料庫。Django 支援多種資料庫,在這個字典變量中更改資料庫配置。在後續章節我們将對 Mysql 資料庫配置進行講解。
這是一個支援插拔的密碼驗證器,且可以一次性配置多個,Django 通過這些内置元件來避免使用者設定的密碼等級不足的問題。
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
分别代表語言配置項和目前服務端時區的配置項,我們常用的配置如下所示:
LANGUAGE_CODE 取值是英文:'en-us'或者中文:'zh-Hans';
TIME_ZONE 取值是世界時區 'UTC' 或中國時區 'Asia/Shanghai'。
項目開發完成後,可以選擇向不同國家的使用者提供服務,那麼就需要支援國際化和本地化。USE_118N 和 USE_L10N 這兩個變量值表示是否需要開啟國際化和本地化功能。預設開啟的狀态。
提示:USE_I18N = True 與 USE_L10N = True 其的 I18N 指的是國際化英文縮寫,L10N 指的是本地化英文縮寫。
它指對時區的處理方式,當設定為 True 的時候,存儲到資料庫的時間是世界時間 'UTC'。
它指的是靜态資源的存放位置,靜态資源包括 CSS、JS、Images。比如我們要在項目中添加一些圖檔,通常這些靜态圖檔被存放在建立的 static 目錄下,這樣就實作了通過 STATIC_URL= '/static/' 路徑對靜态資源的通路。