django核心配置項
Django的預設配置檔案中,包含上百條配置專案,其中很多是我們‘一輩子’都不碰到或者不需要單獨配置的,這些專案在需要的時候再去查手冊。
強調:配置的預設值不是在settings.py檔案中!不要以為settings.py
中的配置值就是預設值,參考前文。settings.py
是使用django-admin startproject xxx
命令時,額外給我們建立的。
下面介紹的是61個相對比較常用和重要的配置項,按字母順序排序,但是最後部分是cache、auth、message、session、static等的配置。
- ADMINS
- ALLOWED_HOSTS
- APPEND_SLASH
- DATABASES
- DATE_FORMAT
- DATE_INPUT_FORMATS
- DATETIME_FORMAT
- DATETIME_INPUT_FORMATS
- DEBUG
- DEFAULT_CHARSET
- DEFAULT_CONTENT_TYPE
- DEFAULT_FROM_EMAIL
- DISALLOWED_USER_AGENTS
- EMAIL_BACKEND
- EMAIL_FILE_PATH
- EMAIL_HOST
- EMAIL_HOST_PASSWORD
- EMAIL_HOST_USER
- EMAIL_PORT
- EMAIL_SUBJECT_PREFIX
- EMAIL_USE_TLS
- EMAIL_USE_SSL
- EMAIL_SSL_CERTFILE
- EMAIL_SSL_KEYFILE
- EMAIL_TIMEOUT
- FILE_CHARSET
- INSTALLED_APPS
- LANGUAGE_CODE
- LANGUAGES
- LOCALE_PATHS
- LOGGING
- LOGGING_CONFIG
- MEDIA_ROOT
- MEDIA_URL
- MIDDLEWARE
- ROOT_URLCONF
- SECRET_KEY
- TEMPLATES
- TIME_ZONE
- USE_I18N
- USE_L10N
- USE_TZ
- WSGI_APPLICATION
- CACHES
- AUTHENTICATION_BACKENDS
- AUTH_USER_MODEL
- LOGIN_REDIRECT_URL
- LOGIN_URL
- LOGOUT_REDIRECT_URL
- PASSWORD_RESET_TIMEOUT_DAYS
- PASSWORD_HASHERS
- MESSAGE_LEVEL
- MESSAGE_STORAGE
- SESSION_COOKIE_AGE
- SESSION_COOKIE_NAME
- SESSION_ENGINE
- SESSION_EXPIRE_AT_BROWSER_CLOSE
- SITE_ID
- STATIC_ROOT
- STATIC_URL
- STATICFILES_DIRS
1. ADMINS
預設值:[](空列表)
所有獲得程式碼錯誤通知的人的郵件地址列表。當DEBUG=False,並且一個檢視引發了異常時,Django將會給這個列表裡的人發一封含有完整異常資訊的電子郵件。列表中的每個專案都應該是(全名,電子郵件地址)的元組。例如:
[('John', '[email protected]'), ('Mary', '[email protected]')]
2. ALLOWED_HOSTS
預設值:[](空列表)
這是新手比較困惑的一個配置項。該配置項列表中包含的是Django站點可以為之提供服務的主機/域名。 也就是哪些主機或IP能夠訪問Django伺服器!列表裡的所有元素是共同存在的關係,不純在衝突、優先順序和排斥的關係。
列表中的值可以是localhost
、www.example.com
或者.example.com
形式的域名。
也可以是IP地址,比如:137.2.4.1
、192.168.1.1
、0.0.0.0
、127.0.0.1
還可以是萬用字元'*',表示所有外部主機都可以訪問Django。但這種情況具有安全風險,在線上環境不要使用。
對於0.0.0.0
,表示區域網內的主機都可以訪問Django。
當DEBUG為True和ALLOWED_HOSTS為
空時,預設相當於配置:['localhost', '127.0.0.1', '[:: 1]']。
3. APPEND_SLASH
預設值:True
當設定為True時,如果請求的URL沒有匹配到URLconf裡面的任何一條URL路由設定,並且沒有以/
(斜槓)結束,該請求將重定向到以請求URL加/
的URL地址。需要注意的是重定向有可能導致POST提交的資料丟失。
通俗的解釋就是,如果你在寫url時忘記了在最後新增一個斜槓,Django會預設幫你加上!請儘量保持預設值!
APPEND_SLASH
設定只有在安裝了CommonMiddleware
中介軟體時才會啟用。
4. DATABASES
預設值: {} (空的字典)
該配置項包含Django專案使用的所有資料庫的設定。這是一個巢狀字典。
DATABASES設定必須配置一個default資料庫,以及指定任意數量的其它資料庫(可以沒有)。
最簡單的配置方式是使用SQLite資料庫,Python和Django內建對SQLite資料庫的支援,無需任何額外的安裝和外掛,如下所示:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'mydatabase', # 或者'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
由於SQLite資料庫就在Django專案本地,通常還是在Django專案根目錄下,以一個檔案的形式存在,沒有使用者名稱、密碼、IP、port的問題,所以配置比較簡單。
當連線其他資料庫後端,比如MySQL、Oracle 或PostgreSQL,必須提供更多的連線引數。下面的例子用於PostgreSQL:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': '127.0.0.1', 'PORT': '5432', } }
下面是DATABASES的內部配置項:
- ATOMIC_REQUESTS
預設值:False
原子性事務請求。
- AUTOCOMMIT
預設值:True
自動提交。
- ENGINE
預設值:''(空字串)
最重要的配置項!指定使用的資料庫後端。 內建的資料庫後端名稱有:
'django.db.backends.postgresql' 'django.db.backends.mysql' 'django.db.backends.sqlite3' 'django.db.backends.oracle'
- HOST
預設值:''(空字串)
資料庫所在的主機。設定的值可以是主機名、IP地址、和socket路徑。空字串表示localhost。SQLite不需要配置這個選項。
如果其值以斜槓('/')開頭並且你使用的是MySQL,MySQL將通過Unix socket連線。 像這樣:
"HOST": '/var/run/mysql'
- NAME
預設值:''(空字串)
使用的資料庫名稱。 對於SQLite,它是資料庫檔案的完整路徑。指定路徑時,請始終使用前向的斜槓,即使在Windows 上(例如C:/homes/user/mysite/sqlite3.db
)。
但是對於MySQL等資料庫,NAME指的是資料庫系統中的具體某個database,Django沒有能力自動在MySQL中建立資料庫,它只能通過模型建立資料表。所以需要你通過各種資料客戶端,在MySQL中提前建立好Django專案需要的資料庫,使用命令CREATE DATABASE mysite CHARACTER SET utf8;
,mysite是你的資料庫名,務必同時指定字元編碼方式為utf8!
- CONN_MAX_AGE
預設:0
資料庫連線的存活時間,以秒為單位。0表示在每個請求結束時關閉資料庫連線,None表示無限的持久連線。
- OPTIONS
Default: {} (預設為空的字典)
連線資料庫時使用的額外引數。可用的引數與你的資料庫後端有關。
- PASSWORD
預設值:''(空字串)
連線資料庫時使用的密碼。SQLite不需要這個選項。
- PORT
預設值:''(空字串)
連線資料庫時使用的埠。空字串表示預設的埠。SQLite不需要這個選項。 MySQL一般是3306。
- TIME_ZONE
預設值:None
資料庫中使用的時區。
- USER
預設值:''(空字串)
連線資料庫時使用的使用者名稱。SQLite不需要這個選項。
- TEST
Default: {} (預設為空的字典)
測試資料庫用的配置。
以下是測試資料庫配置的示例:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'USER': 'mydatabaseuser', 'NAME': 'mydatabase', 'TEST': { 'NAME': 'mytestdatabase', }, }, }
5. DATE_FORMAT
預設值:'N j, Y' (例如:Feb. 4, 2003)
系統中日期欄位的預設顯示格式。
6. DATE_INPUT_FORMATS
預設值:
[ '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06' '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' ]
日期欄位中輸入資料時將能夠被接受的格式列表。格式將按順序嘗試,使用第一個有效的格式。
7. DATETIME_FORMAT
預設值:'N j, Y, P' (例如Feb. 4, 2003, 4 p.m.)
系統中顯示datetime欄位的預設格式。
8. DATETIME_INPUT_FORMATS
預設值:
[ '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200' '%Y-%m-%d %H:%M', # '2006-10-25 14:30' '%Y-%m-%d', # '2006-10-25' '%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59' '%m/%d/%Y %H:%M:%S.%f', # '10/25/2006 14:30:59.000200' '%m/%d/%Y %H:%M', # '10/25/2006 14:30' '%m/%d/%Y', # '10/25/2006' '%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59' '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200' '%m/%d/%y %H:%M', # '10/25/06 14:30' '%m/%d/%y', # '10/25/06' ]
在datetime欄位中輸入資料時將被接受的格式列表。格式將按順序嘗試,使用第一個有效的格式。
9. DEBUG
預設值:False
開啟/關閉除錯模式。最重要的設定之一!預設值是False,你沒有看錯!只是在settings.py中又幫我們設定為True了,打開了除錯模式,方便開發者和測試者的!線上部署網站的時候務必設定為False。
除錯模式下可以顯示錯誤頁面的細節。若你的應用產生了一個異常,Django會顯示追溯細節,包括許多環境變數的元資料, 比如所有當前定義的Django設定。
作為安全考慮,除錯資訊中不會列出包含下列關鍵字的配置項的內容,例如SECRET_KEY:
'API' 'KEY' 'PASS' 'SECRET' 'SIGNATURE' 'TOKEN'
注意,這裡使用的是包含匹配,也就是說只要出現這些子字串的配置項將匹配上。例如'PASS'能夠匹配 PASSWORD, 'TOKEN'也將匹配TOKENIZED等等.
最後再次強調,如果DEBUG為False,你還需要正確設定ALLOWED_HOSTS
以及靜態檔案。錯誤設定將導致對所有的請求返回“Bad Request (400)”。
10. DEFAULT_CHARSET
預設值:'utf-8'
HttpResponse響應物件的預設字符集。
11. DEFAULT_CONTENT_TYPE
預設值:'text/html'
HttpResponse物件的預設內容型別。
12. DEFAULT_FROM_EMAIL
預設值:'[email protected]'
預設的電子郵件傳送地址,即傳送方。
13. DISALLOWED_USER_AGENTS
預設值:[](空列表)
這是一個編譯好了的正則表示式物件的列表。代表哪些不允許訪問任何頁面的User-Agent字串。也就是說如果一個請求的User-Agent屬性,被這個配置項中的任何一個正則表示式匹配到了,那麼這個請求將被阻止。常用於對付機器人和網路蜘蛛。需要CommonMiddleware中介軟體支援。
14. EMAIL_BACKEND
預設值:' django.core.mail.backends.smtp.EmailBackend '
用於傳送郵件的後端。
15. EMAIL_FILE_PATH
預設:未指定
郵件後端儲存輸出檔案時使用的目錄。
16. EMAIL_HOST
預設:'localhost'
傳送郵件使用的主機。
17. EMAIL_HOST_PASSWORD
預設值:''(空字串)
EMAIL_HOST
的SMTP伺服器使用的密碼。
18. EMAIL_HOST_USER
預設值:''(空字串)
EMAIL_HOST
的SMTP伺服器使用的使用者名稱。
19. EMAIL_PORT
預設:25
EMAIL_HOST
的SMTP伺服器使用的埠。
20. EMAIL_SUBJECT_PREFIX
預設值:'[Django] '
使用django.core.mail.mail_admins
或django.core.mail.mail_managers
傳送的電子郵件的主題行字首。
21. EMAIL_USE_TLS
預設值:False
是否使用TLS(安全)與SMTP伺服器連線。用於顯式TLS連線,通常在埠587上。
22. EMAIL_USE_SSL
預設值:False
在與SMTP伺服器通訊時是否使用隱式TLS(安全)連線。在大多數電子郵件文件中,此型別的TLS連線稱為SSL。 它通常在埠465上使用。
注意:騰訊家的qq郵箱服務,需要使用ssl安全連結在465埠上!
請注意,EMAIL_USE_TLS
與EMAIL_USE_SSL
是互斥的,因此只能將其中一個設定設定為True。
23. EMAIL_SSL_CERTFILE
預設值:None
如果EMAIL_USE_SSL
或EMAIL_USE_TLS
為True,則可以選擇指定要用於SSL連線的PEM格式的證書鏈檔案的路徑。
24. EMAIL_SSL_KEYFILE
預設值:None
如果EMAIL_USE_SSL
或EMAIL_USE_TLS為True
,可以選擇指定要用於SSL連線的PEM格式的私鑰檔案的路徑。
25. EMAIL_TIMEOUT
預設值:None
郵件傳送超時時間。
26. FILE_CHARSET
預設值:'utf-8'
從磁碟讀取檔案時使用的字元編碼。包括模板檔案和初始SQL資料檔案。
沒有特別需求,請不要修改它。
27. INSTALLED_APPS
預設值:[](空列表)
Django核心配置項!
當前Django專案中啟用的app列表。 每個元素應該是一個Python的點分路徑,字串格式:
專案內每個啟用的app,包括Django內建的contrib都必須在這個列表裡註冊,否則建立資料表、呼叫功能等等都無法進行。
一個典型的配置如下:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app1', 'app2', ]
建議在最後一個元素後面添加個逗號。
28. LANGUAGE_CODE
預設值:'en-us'
當前專案所使用的語言。預設為英語。漢語是zh-hans
,千萬不要寫成別的,比如‘chinese’之類!
USE_I18N
必須設定為True才能使LANGUAGE_CODE
生效。
29. LANGUAGES
預設值:所有可用語言的列表。
該配置項表示可用的語言種類,(語言程式碼,語言名稱)兩元組列表,例如:('ja', 'Japanese')。
一般來說,預設值足夠了。如果自定義LANGUAGES設定,可以使用ugettext_lazy()
函式將語言名稱標記為翻譯字串。
下面是一個示例設定檔案:
from django.utils.translation import ugettext_lazy as _ LANGUAGES = [ ('de', _('German')), ('en', _('English')), ]
30. LOCALE_PATHS
預設值:[](空列表)
Django查詢翻譯檔案的目錄列表,例如:
LOCALE_PATHS = [ '/home/www/project/common_files/locale', '/var/local/translations/locale', ]
Django將在這些路徑中查詢包含實際翻譯檔案的目錄。
31. LOGGING
預設值:日誌配置字典。
日誌配置資訊。
32. LOGGING_CONFIG
預設值:'logging.config.dictConfig'
用於在Django專案中配置日誌記錄的可呼叫項的路徑。
33. MEDIA_ROOT
預設值:''(空字串)
使用者上傳的檔案,所在目錄的,檔案系統絕對路徑。也就是指示上傳檔案放到哪裡。
例如: "/var/www/example.com/media/"
警告:MEDIA_ROOT
和STATIC_ROOT
必須設定為不同的值。
34. MEDIA_URL
預設值:''(空字串)
MEDIA_URL
指向MEDIA_ROOT
所指定的media檔案,用來管理儲存的檔案。該URL設定為非空值時,必須以斜槓“/”結束。
若你打算在模版中使用{{ MEDIA_URL }}
,必須在TEMPLATES的context_processors
設定中新增django.template.context_processors.media
。
警告:MEDIA_URL
和STATIC_URL
必須設定為不同的值。
35. MIDDLEWARE
預設值:None
Django1.10中的新功能。要使用的中介軟體列表。Django-admin命令建立的新專案中,settings.py檔案裡預設會為MIDDLEWARE配置項新增一系列Django內建的中介軟體,我們保持它不變就好了。
36. ROOT_URLCONF
預設:未指定
一個字串,表示根URLconf的完整Python匯入路徑。例如:"mydjangoapps.urls"。
每個請求都可以覆蓋它,通過設定HTTP請求HttpRequest物件的urlconf屬性。但不是閒的,請不要特別設定,使用預設值就好。
37. SECRET_KEY
預設值:''(空字串)
當前Django專案例項的金鑰。用於提供cryptographic簽名,是一個唯一的並且不可預測的值。比如:
SECRET_KEY = '+$*n1_pkko%[email protected]^qy3mcsuy+*ov%ikpvd5$rf'
通過django-admin startproject xxx
命令建立的專案,會在settings.py中新增隨機生成的SECRET_KEY
。
如果未設定SECRET_KEY
,Django將無法啟動。
警告:不要透露該配置項的真實值!
38. TEMPLATES
預設值:[](空列表)
Django模板系統相關的配置。列表中每一項都是一個字典型別資料(類似DATABASE配置),可以配置模板不同的功能。
下面是一個例子:
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'APP_DIRS': True, }, ]
以下選項適用於所有後端。
BACKEND:
預設:未指定
要使用的模板後端。 內建模板後端有:
'django.template.backends.django.DjangoTemplates' 'django.template.backends.jinja2.Jinja2'
通過將BACKEND設定為完全限定路徑(即'mypackage.whatever.Backend'),你可以使用第三方提供的模板後端。
NAME:
預設值:見下面
此特定模板引擎的別名,一個識別符號,用於在某些情況下指定選擇引擎進行渲染。別名在所有已配置的模板引擎中必須是唯一的。
當沒有提供時,如果後端是'mypackage.whatever.Backend',則其預設名稱為'whatever'。
DIRS:
預設值:[](空列表)
搜尋模版的路徑列表。搜尋引擎會按照列表的排列順序查詢template資原始檔。短路演算法,找到即退出,不再往下找。
APP_DIRS
預設值:False
Templates搜尋引擎是否應該在已安裝的app中查詢Template原始檔。建議保持開啟,即設定為True!
由django-admin startproject xxx
命令建立的Django專案,其settings.py檔案中'APP_DIRS'已經設定為True了。
OPTIONS:
預設值:{}
傳遞給模板後端的額外引數。 可用引數因模板後端而異。
39. TIME_ZONE
預設:'America/Chicago'
時區設定。
注意,這個配置項的值不一定要和伺服器的時區一致。例如,一個伺服器可上可能有多個Django站點,每個站點都有一個單獨的時區設定。
如果要設為中國時間,也就是北京時間,請賦值:TIME_ZONE = 'Asia/Shanghai'
。注意是上海,不是北京,囧!
當USE_TZ
為False時,它將成為Django儲存所有日期和時間資料時,使用的時區。 當USE_TZ
為True 時,它是Django顯示模板中的時間,解釋表單中的日期,使用的時區。所以,通常我們都將USE_TZ
同時設定為False!
注:在Windows 環境中,Django不能可靠地交替其它時區。如果你在Windows上執行Django,TIME_ZONE
必須設定為與系統時區一致。
40. USE_I18N
預設值:True
這是一個布林值,指定Django的翻譯系統是否開啟。如果設定為False,Django會做一些優化,不去載入翻譯機制。
由django-admin startproject xxx
命令建立的Django專案,其settings.py檔案中'USE_I18N'已經設定為True了。
41. USE_L10N
預設值:False
一個布林值,用於決定是否開啟資料本地化。如果此設定為True,例如Django將使用當前語言環境的格式顯示數字和日期。
由django-admin startproject xxx
命令建立的Django專案,其settings.py檔案中'USE_L10N'已經設定為True了。
42. USE_TZ
預設值:False
一個布林值,用來指定是否使用指定的時區(TIME_ZONE)的時間。若為True, 則Django會使用內建的時區的時間;否則, Django將會使用本地的時間。
由django-admin startproject xxx
命令建立的Django專案,其settings.py檔案中'USE_TZ'已經設定為True了。
如果我們將TIME_ZONE
設定成了Asia/Shanghai
, 那麼務必同時將USE_TZ
改成False!
43. WSGI_APPLICATION
預設值:None
Django的內建伺服器(例如runserver)將使用的WSGI應用程式物件的完整Python路徑。
Django使用WSGI協議與外部進行通訊。
由django-admin startproject xxx
命令建立的Django專案,將自動建立一個簡單的wsgi.py
模組,裡面有一個可呼叫的application變數,WSGI_APPLICATION配置項的值就指向這個application變數。
下面是wsgi.py
的原始碼:
"""
WSGI config for mysite project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/
"""
import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") application = get_wsgi_application()
以下是一些子系統或工具框架的相關配置
44. CACHES
預設值:
{ 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', } }
一個巢狀字典,包含所有快取系統要使用的設定。
CACHES設定必須配置一個default快取,還可以同時指定任何數量的附加快取(也可以沒有)。
以下是重要的內部配置專案:
BACKEND:
預設值:''(空字串)
要使用的快取後端。 內建快取記憶體後端有:
'django.core.cache.backends.db.DatabaseCache' 'django.core.cache.backends.dummy.DummyCache' 'django.core.cache.backends.filebased.FileBasedCache' 'django.core.cache.backends.locmem.LocMemCache' 'django.core.cache.backends.memcached.MemcachedCache' 'django.core.cache.backends.memcached.PyLibMCCache'
通過將BACKEND設定為快取後端類的完全限定路徑(例如mypackage.backends.whatever.WhateverCache),可以使用第三方的快取後端。)。
LOCATION:
預設值:''(空字串)
要使用的快取的位置,可能是檔案系統快取的目錄,記憶體快取伺服器的主機和埠,或者只是本地記憶體快取的標識名稱。 例如:
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 'LOCATION': '/var/tmp/django_cache', } }
OPTIONS:
預設值:None
傳遞到快取後端的額外引數。可用引數因快取後端而異。
TIMEOUT:
預設值:300
快取記憶體的有效時間。 如果此設定的值為None,則快取將永遠不會過期。
VERSION:
預設值:1
Django伺服器生成的快取鍵的預設版本號。
45. AUTHENTICATION_BACKENDS
預設值:['django.contrib.auth.backends.ModelBackend']
在嘗試驗證使用者時使用的認證後端的列表。預設使用Django自帶的Auth框架。
46. AUTH_USER_MODEL
預設值:'auth.User'
預設使用的User模型。
47. LOGIN_REDIRECT_URL
預設:'/accounts/profile/'
登入之後,如果contrib.auth.login
檢視找不到next引數,請求將被重定向到該URL。
48. LOGIN_URL
預設:'/accounts/login/'
登入頁面的URL。
49. LOGOUT_REDIRECT_URL
預設值:None
使用LogoutView檢視退出登入後,請求被重定向的URL。如果設定為None,則不執行重定向。
50. PASSWORD_RESET_TIMEOUT_DAYS
預設:3
重置密碼的連結,的有效期,的天數。(逗號分開,是不是更好理解一點?) 用於django.contrib.auth
的密碼重置功能。
51. PASSWORD_HASHERS
密碼雜湊使用的演算法。
預設:
[ 'django.contrib.auth.hashers.PBKDF2PasswordHasher', 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', 'django.contrib.auth.hashers.Argon2PasswordHasher', 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher', 'django.contrib.auth.hashers.BCryptPasswordHasher', ]
在Django1.10時,以下hashers從預設值中刪除:
'django.contrib.auth.hashers.SHA1PasswordHasher' 'django.contrib.auth.hashers.MD5PasswordHasher' 'django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher' 'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher' 'django.contrib.auth.hashers.CryptPasswordHasher'
52. MESSAGE_LEVEL
預設值:messages.INFO
設定Django內建的訊息框架-message,將記錄的最低訊息級別。
53. MESSAGE_STORAGE
預設值:'django.contrib.messages.storage.fallback.FallbackStorage'
控制Django在哪裡儲存訊息資料。 有效值為:
'django.contrib.messages.storage.fallback.FallbackStorage' 'django.contrib.messages.storage.session.SessionStorage' 'django.contrib.messages.storage.cookie.CookieStorage'
54. SESSION_COOKIE_AGE
預設:1209600(2個星期)
會話Cookie的過期時間,以秒為單位。
55. SESSION_COOKIE_NAME
預設值:'sessionid'
要用於會話的Cookie的名稱。 名字隨意,只要與應用程式中的其他cookie名稱不同。
56. SESSION_ENGINE
預設值:'django.contrib.sessions.backends.db'
會話使用的後端,也就是會話資料的儲存未知。 內建支援的引擎有:
'django.contrib.sessions.backends.db' 'django.contrib.sessions.backends.file' 'django.contrib.sessions.backends.cache' 'django.contrib.sessions.backends.cached_db' 'django.contrib.sessions.backends.signed_cookies'
57. SESSION_EXPIRE_AT_BROWSER_CLOSE
預設值:False
是否在使用者關閉瀏覽器時過期會話。
58. SITE_ID
預設:未指定
當前站點在django_site
資料庫表中的ID,一個整數,從1開始計數。
很多人都不知道Django是支援多站點同時執行的。
通常我們都只有一個站點,所以不關心這個選項。如果你同時運行了多個站點,那麼每個app就得知道自己是為那個站點或哪些站點服務的,這就需要SITE_ID引數了。
59. STATIC_ROOT
預設值:None
在DEBUG設定為False時,也就是線上環境時,Django專案裡的靜態檔案(js\css\plugins)會無法使用。這是,需要執行python manage.py collectstatic
,將靜態檔案統一收集到一個目錄下。STATIC_ROOT配置的就是該目錄的絕對路徑。
示例:"/var/www/example.com/static/"
這個目錄,剛開始應該是一個空目錄。
60. STATIC_URL
預設值:None
引用位於STATIC_ROOT中的靜態檔案時使用的網址。
示例:"/static/"或"http://static.example.com/"
該URL設定為非空值時,必須以斜槓“/”結束。
61. STATICFILES_DIRS
預設值:[](空列表)
定義額外的靜態檔案搜尋地址。
例如:
STATICFILES_DIRS = [ "/home/special.polls.com/polls/static", "/home/polls.com/polls/static", "/opt/webfiles/common", ]
請注意,即使在Windows上(例如"C:/Users/user/mysite/extra_static_content"),這些路徑也要使用Unix樣式的正斜槓。
如果你實在分不清楚MEDIA_ROOT
、MEDIA_URL
、STATIC_ROOT
、STATIC_URL
和STATICFILES_DIRS
的區別,下面是一個參考版的設定:
# Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.11/howto/static-files/ STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ] STATIC_ROOT = os.path.join(BASE_DIR, "all_static_files") MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace("\\", "/") MEDIA_URL = '/media/'