天天看點

02settings.py 配置檔案介紹

下面對 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/' 路徑對靜态資源的通路。