設定¶
警告
覆寫設定時請小心,尤其是當預設值為非空列表或字典時,例如 STATICFILES_FINDERS
。請確保您保留要使用的 Django 功能所需的組件。
核心設定¶
以下是 Django 核心中可用的設定及其預設值列表。 contrib 應用程式提供的設定列於下方,接著是核心設定的主題索引。如需入門資料,請參閱設定主題指南。
ABSOLUTE_URL_OVERRIDES
¶
預設值:{}
(空的字典)
一個字典,將 "app_label.model_name"
字串映射到接收模型物件並傳回其 URL 的函式。這是在每個安裝基礎上插入或覆寫 get_absolute_url()
方法的一種方式。範例
ABSOLUTE_URL_OVERRIDES = {
"blogs.blog": lambda o: "/blogs/%s/" % o.slug,
"news.story": lambda o: "/stories/%s/%s/" % (o.pub_year, o.slug),
}
此設定中使用的模型名稱應全部小寫,無論實際模型類別名稱的大小寫為何。
ADMINS
¶
預設值:[]
(空的列表)
所有接收程式碼錯誤通知的人員的列表。當 DEBUG=False
且 AdminEmailHandler
在 LOGGING
中設定時(預設情況下完成),Django 會將請求/回應週期中引發的例外狀況詳細資訊透過電子郵件發送給這些人員。
列表中的每個項目都應為 (完整姓名, 電子郵件地址) 的元組。範例
[("John", "john@example.com"), ("Mary", "mary@example.com")]
ALLOWED_HOSTS
¶
預設值:[]
(空的列表)
代表此 Django 網站可以服務的主機/網域名稱的字串列表。這是一種安全措施,可防止 HTTP 主機標頭攻擊,即使在許多看似安全的網路伺服器設定下,這種攻擊也是有可能的。
此列表中的值可以是完整限定名稱(例如 'www.example.com'
),在這種情況下,它們將與請求的 Host
標頭完全匹配(不區分大小寫,不包括連接埠)。以句點開頭的值可以用作子網域萬用字元:'.example.com'
將匹配 example.com
、www.example.com
和 example.com
的任何其他子網域。'*'
的值將匹配任何內容;在這種情況下,您有責任提供您自己的 Host
標頭驗證(可能在中間件中;如果是這樣,則此中間件必須在 MIDDLEWARE
中列出)。
Django 也允許任何項目的 完整限定網域名稱 (FQDN)。某些瀏覽器會在 Host
標頭中包含尾隨點,Django 在執行主機驗證時會將其剝離。
如果 Host
標頭(或如果啟用 USE_X_FORWARDED_HOST
,則為 X-Forwarded-Host
)與此列表中的任何值不匹配,則 django.http.HttpRequest.get_host()
方法將引發 SuspiciousOperation
。
當 DEBUG
為 True
且 ALLOWED_HOSTS
為空時,主機會針對 ['.localhost', '127.0.0.1', '[::1]']
進行驗證。
ALLOWED_HOSTS
在執行測試時也會檢查。
此驗證僅透過 get_host()
應用;如果您的程式碼直接從 request.META
存取 Host
標頭,則您正在繞過此安全保護。
APPEND_SLASH
¶
預設值:True
設定為 True
時,如果請求 URL 與 URLconf 中的任何模式不匹配,且不以斜線結尾,則會向相同的 URL 發出 HTTP 重定向,並附加斜線。請注意,重定向可能會導致 POST 請求中提交的任何資料遺失。
只有在安裝 CommonMiddleware
時才會使用 APPEND_SLASH
設定(請參閱 中介軟體)。另請參閱 PREPEND_WWW
。
CACHES
¶
預設值
{
"default": {
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
}
}
一個字典,其中包含將與 Django 一起使用的所有快取設定。它是一個巢狀字典,其內容將快取別名映射到包含個別快取的選項的字典。
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.PyMemcacheCache'
'django.core.cache.backends.memcached.PyLibMCCache'
'django.core.cache.backends.redis.RedisCache'
您可以將 BACKEND
設定為快取後端類別的完整限定路徑(即 mypackage.backends.whatever.WhateverCache
),來使用未隨 Django 附帶的快取後端。
KEY_FUNCTION
¶
一個字串,其中包含指向函式(或任何可呼叫物件)的點路徑,該函式定義如何將字首、版本和金鑰組合成最終快取金鑰。預設實作相當於函式
def make_key(key, key_prefix, version):
return ":".join([key_prefix, str(version), key])
您可以使用任何您想要的金鑰函式,只要它具有相同的引數簽名即可。
如需更多資訊,請參閱 快取文件。
KEY_PREFIX
¶
預設值:''
(空字串)
一個字串,它將自動包含(預設情況下會加上前綴)到 Django 伺服器使用的所有快取金鑰中。
如需更多資訊,請參閱 快取文件。
LOCATION
¶
預設值:''
(空字串)
要使用的快取位置。這可能是檔案系統快取的目錄、memcache 伺服器的主機和連接埠,或是本機記憶體快取的識別名稱。例如
CACHES = {
"default": {
"BACKEND": "django.core.cache.backends.filebased.FileBasedCache",
"LOCATION": "/var/tmp/django_cache",
}
}
OPTIONS
¶
預設值:None
要傳遞至快取後端的額外參數。可用參數因您的快取後端而異。
可在 快取引數 文件中找到一些關於可用參數的資訊。如需更多資訊,請查閱您的後端模組自己的文件。
TIMEOUT
¶
預設值:300
快取條目被視為過期前的秒數。如果此設定的值為 None
,快取條目將不會過期。值為 0
會導致鍵立即過期(實際上是「不快取」)。
VERSION
¶
預設值:1
由 Django 伺服器產生的快取鍵的預設版本號碼。
請參閱快取文件以獲取更多資訊。
CACHE_MIDDLEWARE_ALIAS
¶
預設值:'default'
用於快取中介軟體的快取連線。
CACHE_MIDDLEWARE_KEY_PREFIX
¶
預設值:''
(空字串)
將會加在由快取中介軟體產生的快取鍵前面的字串。這個前綴會與KEY_PREFIX
設定合併;它不會取代它。
請參閱Django 的快取框架。
CACHE_MIDDLEWARE_SECONDS
¶
預設值:600
為快取中介軟體快取頁面的預設整數秒數。
請參閱Django 的快取框架。
CSRF_USE_SESSIONS
¶
預設值:False
是否將 CSRF 權杖儲存在使用者的會話中,而不是儲存在 Cookie 中。它需要使用 django.contrib.sessions
。
將 CSRF 權杖儲存在 Cookie 中(Django 的預設值)是安全的,但將其儲存在會話中是其他 Web 框架中的常見做法,因此有時安全稽核人員會要求這樣做。
由於預設錯誤檢視需要 CSRF 權杖,因此如果使用 CSRF_USE_SESSIONS
,SessionMiddleware
必須出現在 MIDDLEWARE
中,並且在任何可能會引發例外以觸發錯誤檢視的中介軟體之前(例如 PermissionDenied
)。請參閱中介軟體排序。
CSRF_FAILURE_VIEW
¶
預設值:'django.views.csrf.csrf_failure'
當傳入的請求被CSRF 保護拒絕時要使用的檢視函數的虛線路徑。該函數應該具有以下簽名
def csrf_failure(request, reason=""): ...
其中 reason
是一個簡短訊息(旨在供開發人員或記錄使用,而不是供最終使用者使用),表示請求被拒絕的原因。它應該傳回一個 HttpResponseForbidden
。
django.views.csrf.csrf_failure()
接受一個額外的 template_name
參數,預設為 '403_csrf.html'
。如果存在具有該名稱的範本,它將用於呈現該頁面。
CSRF_HEADER_NAME
¶
預設值:'HTTP_X_CSRFTOKEN'
用於 CSRF 驗證的請求標頭名稱。
與 request.META
中的其他 HTTP 標頭一樣,從伺服器接收到的標頭名稱會被正規化,方法是將所有字元轉換為大寫,將所有連字號替換為底線,並在名稱中加上 'HTTP_'
前綴。例如,如果您的用戶端傳送 'X-XSRF-TOKEN'
標頭,則設定應為 'HTTP_X_XSRF_TOKEN'
。
CSRF_TRUSTED_ORIGINS
¶
預設值:[]
(空的列表)
一個用於不安全請求(例如 POST
)的信任來源列表。
對於包含 Origin
標頭的請求,Django 的 CSRF 保護機制要求該標頭與 Host
標頭中存在的來源相符。
對於不包含 Origin
標頭的安全
不安全請求,該請求必須具有與 Host
標頭中存在的來源相符的 Referer
標頭。
這些檢查可以防止例如從 subdomain.example.com
發出的 POST
請求成功對抗 api.example.com
。如果您需要跨來源的不安全請求,繼續使用這個範例,請將 'https://subdomain.example.com'
加入此列表(和/或如果請求來自不安全的頁面,則加入 http://...
)。
此設定也支援子網域,因此您可以加入 'https://*.example.com'
,例如,允許從 example.com
的所有子網域進行存取。
DATABASES
¶
預設值:{}
(空的字典)
一個包含所有要與 Django 一起使用的資料庫設定的字典。它是一個巢狀字典,其內容將資料庫別名對應到包含個別資料庫選項的字典。
DATABASES
設定必須設定一個 default
資料庫;也可以指定任何數量的額外資料庫。
最簡單的設定檔是使用 SQLite 的單一資料庫設定。可以使用以下方式設定
DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": "mydatabase",
}
}
當連線到其他資料庫後端(例如 MariaDB、MySQL、Oracle 或 PostgreSQL)時,將需要額外的連線參數。請參閱下方關於如何指定其他資料庫類型的 ENGINE
設定。此範例適用於 PostgreSQL
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": "mydatabase",
"USER": "mydatabaseuser",
"PASSWORD": "mypassword",
"HOST": "127.0.0.1",
"PORT": "5432",
}
}
以下可能需要用於更複雜設定的內部選項可供使用
ATOMIC_REQUESTS
¶
預設值:False
將此設定為 True
以將每個視圖包裝在此資料庫的交易中。請參閱將交易綁定到 HTTP 請求。
AUTOCOMMIT
¶
預設值:True
如果您想要停用 Django 的交易管理並實作您自己的交易管理,請將此設定為 False
。
ENGINE
¶
預設值:''
(空字串)
要使用的資料庫後端。內建的資料庫後端有
'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
您可以將 ENGINE
設定為完整路徑(即 mypackage.backends.whatever
),來使用未隨 Django 一起提供的資料庫後端。
HOST
¶
預設值:''
(空字串)
連線到資料庫時要使用的主機。空字串表示本機主機。不與 SQLite 一起使用。
如果此值以正斜線 ('/'
) 開頭且您使用的是 MySQL,則 MySQL 將會透過 Unix socket 連線到指定的 socket。例如
"HOST": "/var/run/mysql"
如果您使用的是 MySQL 且此值不以正斜線開頭,則此值會被假定為主機。
如果您使用的是 PostgreSQL,依預設(空的 HOST
),會透過 UNIX 網域 socket 執行與資料庫的連線(pg_hba.conf
中的「local」行)。如果您的 UNIX 網域 socket 不在標準位置,請使用 postgresql.conf
中的相同 unix_socket_directory
值。如果您想透過 TCP socket 連線,請將 HOST
設定為「localhost」或「127.0.0.1」(pg_hba.conf
中的「host」行)。在 Windows 上,您應始終定義 HOST
,因為 UNIX 網域 socket 無法使用。
NAME
¶
預設值:''
(空字串)
要使用的資料庫名稱。對於 SQLite,它是資料庫檔案的完整路徑。指定路徑時,請始終使用正斜線,即使在 Windows 上也是如此(例如 C:/homes/user/mysite/sqlite3.db
)。
CONN_MAX_AGE
¶
預設值:0
資料庫連線的存續時間,以秒為單位的整數表示。使用 0
在每個請求結束時關閉資料庫連線(Django 的歷史行為),並使用 None
進行無限期的持久資料庫連線。
CONN_HEALTH_CHECKS
¶
預設值:False
如果設定為 True
,現有的持久資料庫連線將在每個執行資料庫存取的請求中重新使用之前進行健康檢查。如果健康檢查失敗,則當連線不再可用但資料庫伺服器已準備好接受並處理新連線時(例如,在關閉現有連線的資料庫伺服器重新啟動後),將會重新建立連線,而不會使請求失敗。
OPTIONS
¶
預設值:{}
(空的字典)
連線到資料庫時要使用的額外參數。可用的參數會根據您的資料庫後端而有所不同。
有關可用參數的一些資訊可以在資料庫後端文件中找到。如需更多資訊,請參閱您的後端模組自己的文件。
PASSWORD
¶
預設值:''
(空字串)
連線到資料庫時要使用的密碼。不與 SQLite 一起使用。
PORT
¶
預設值:''
(空字串)
連線到資料庫時要使用的連接埠。空字串表示預設連接埠。不與 SQLite 一起使用。
TIME_ZONE
¶
預設值:None
一個代表此資料庫連線時區的字串,或 None
。DATABASES
設定的此內部選項接受與一般 TIME_ZONE
設定相同的值。
當 USE_TZ
為 True
時,從資料庫讀取日期時間會傳回具有時區感知功能的日期時間,如果未設定為 None
,則時區設定為此選項的值,否則為 UTC。
當 USE_TZ
為 False
時,設定此選項會發生錯誤。
如果資料庫後端不支援時區(例如 SQLite、MySQL、Oracle),Django 會根據此選項(如果已設定)以本地時間讀取和寫入日期時間,如果未設定,則以 UTC 讀取和寫入日期時間。
變更連線時區會變更從資料庫讀取和寫入日期時間的方式。
如果 Django 管理資料庫,且您沒有強烈的理由要執行其他操作,則應將此選項保持不設定。最好將日期時間儲存在 UTC 中,因為這樣可以避免在日光節約時間變更期間產生模稜兩可或不存在的日期時間。此外,接收 UTC 的日期時間可讓日期時間算術保持簡單 — 無需考慮 DST 轉換期間可能發生的偏移變更。
如果您要連線到將日期時間儲存在本地時間而不是 UTC 的協力廠商資料庫,則必須將此選項設定為適當的時區。同樣地,如果 Django 管理資料庫,但協力廠商系統連線到相同的資料庫,並預期會找到本地時間的日期時間,則您必須設定此選項。
如果資料庫後端支援時區(例如 PostgreSQL),則資料庫連線的時區會設定為此值。
雖然很少需要設定
TIME_ZONE
選項,但在某些情況下會變得有必要。具體來說,建議在處理涉及日期/時間函數(例如 PostgreSQL 的date_trunc()
或generate_series()
)的原始查詢時,特別是在產生轉換日光節約時間的基於時間的序列時,將其與一般TIME_ZONE
設定進行比對。此值可以隨時變更,資料庫將處理日期時間轉換為設定的時區。
但是,這有一個缺點:接收本地時間的所有日期時間會使日期時間算術變得更加棘手 — 您必須考慮 DST 轉換期間可能發生的偏移變更。
請考慮使用原始 SQL 查詢中的
AT TIME ZONE
明確轉換為本地時間,而不是設定TIME_ZONE
選項。
DISABLE_SERVER_SIDE_CURSORS
¶
預設值:False
如果您想停用搭配 QuerySet.iterator()
使用伺服器端資料指標,請將此設定為 True
。交易池和伺服器端資料指標說明了使用案例。
這是 PostgreSQL 特有的設定。
USER
¶
預設值:''
(空字串)
連線到資料庫時要使用的使用者名稱。不與 SQLite 一起使用。
TEST
¶
預設值:{}
(空的字典)
測試資料庫設定的字典;關於測試資料庫的建立和使用的更多詳細資訊,請參閱測試資料庫。
這是一個包含測試資料庫配置的範例
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"USER": "mydatabaseuser",
"NAME": "mydatabase",
"TEST": {
"NAME": "mytestdatabase",
},
},
}
TEST
字典中可用的鍵如下
CHARSET
¶
預設值:None
用於建立測試資料庫的字元集編碼。此字串的值會直接傳遞給資料庫,因此其格式是特定於後端的。
PostgreSQL (postgresql
) 和 MySQL (mysql
) 後端支援此功能。
COLLATION
¶
預設值:None
建立測試資料庫時要使用的定序順序。此值會直接傳遞給後端,因此其格式是特定於後端的。
僅mysql
後端支援此功能(詳細資訊請參閱MySQL 手冊)。
DEPENDENCIES
¶
預設值:['default']
,適用於除了default
以外的所有資料庫,而default
沒有任何相依性。
資料庫的建立順序相依性。有關詳細資訊,請參閱關於控制測試資料庫建立順序的文件。
MIGRATE
¶
預設值:True
當設定為False
時,建立測試資料庫時不會執行遷移。這類似於在MIGRATION_MODULES
中設定None
值,但適用於所有應用程式。
MIRROR
¶
預設值:None
此資料庫在測試期間應鏡像的資料庫別名。它依賴於交易,因此必須在TransactionTestCase
中使用,而不是在TestCase
中使用。
此設定的存在是為了允許測試多個資料庫的主/副本(某些資料庫稱為主/從)配置。有關詳細資訊,請參閱關於測試主/副本配置的文件。
NAME
¶
預設值:None
執行測試套件時要使用的資料庫名稱。
如果將預設值(None
)與 SQLite 資料庫引擎一起使用,則測試將使用駐留在記憶體中的資料庫。對於所有其他資料庫引擎,測試資料庫將使用名稱'test_' + DATABASE_NAME
。
請參閱測試資料庫。
TEMPLATE
¶
這是 PostgreSQL 特有的設定。
用於建立測試資料庫的範本名稱(例如'template0'
)。
CREATE_DB
¶
預設值:True
這是一個 Oracle 特定的設定。
如果設定為False
,則測試表空間不會在測試開始時自動建立,也不會在結束時刪除。
CREATE_USER
¶
預設值:True
這是一個 Oracle 特定的設定。
如果設定為False
,則測試使用者不會在測試開始時自動建立,也不會在結束時刪除。
USER
¶
預設值:None
這是一個 Oracle 特定的設定。
連線到將在執行測試時使用的 Oracle 資料庫時要使用的使用者名稱。如果未提供,Django 將使用'test_' + USER
。
PASSWORD
¶
預設值:None
這是一個 Oracle 特定的設定。
連線到將在執行測試時使用的 Oracle 資料庫時要使用的密碼。如果未提供,Django 將產生一個隨機密碼。
ORACLE_MANAGED_FILES
¶
預設值:False
這是一個 Oracle 特定的設定。
如果設定為True
,則將使用 Oracle Managed Files (OMF) 表空間。DATAFILE
和 DATAFILE_TMP
將被忽略。
TBLSPACE
¶
預設值:None
這是一個 Oracle 特定的設定。
執行測試時將使用的表空間名稱。如果未提供,Django 將使用'test_' + USER
。
TBLSPACE_TMP
¶
預設值:None
這是一個 Oracle 特定的設定。
執行測試時將使用的臨時表空間名稱。如果未提供,Django 將使用'test_' + USER + '_temp'
。
DATAFILE
¶
預設值:None
這是一個 Oracle 特定的設定。
用於 TBLSPACE 的資料檔案名稱。如果未提供,Django 將使用TBLSPACE + '.dbf'
。
DATAFILE_TMP
¶
預設值:None
這是一個 Oracle 特定的設定。
用於 TBLSPACE_TMP 的資料檔案名稱。如果未提供,Django 將使用TBLSPACE_TMP + '.dbf'
。
DATAFILE_MAXSIZE
¶
預設值:'500M'
這是一個 Oracle 特定的設定。
允許 DATAFILE 成長的最大大小。
DATAFILE_TMP_MAXSIZE
¶
預設值:'500M'
這是一個 Oracle 特定的設定。
允許 DATAFILE_TMP 成長的最大大小。
DATAFILE_SIZE
¶
預設值:'50M'
這是一個 Oracle 特定的設定。
DATAFILE 的初始大小。
DATAFILE_TMP_SIZE
¶
預設值:'50M'
這是一個 Oracle 特定的設定。
DATAFILE_TMP 的初始大小。
DATAFILE_EXTSIZE
¶
預設值:'25M'
這是一個 Oracle 特定的設定。
當需要更多空間時,DATAFILE 擴展的大小。
DATAFILE_TMP_EXTSIZE
¶
預設值:'25M'
這是一個 Oracle 特定的設定。
當需要更多空間時,DATAFILE_TMP 擴展的大小。
DATA_UPLOAD_MAX_MEMORY_SIZE
¶
預設值:2621440
(即 2.5 MB)。
在引發 SuspiciousOperation
(RequestDataTooBig
) 之前,請求主體允許的最大位元組大小。當存取request.body
或 request.POST
時會執行檢查,並根據排除任何檔案上傳資料的總請求大小計算。您可以將此設定為None
來停用檢查。預期接收異常大型表單提交的應用程式應調整此設定。
請求資料量與處理請求和填入 GET 和 POST 字典所需的記憶體量相關。如果未經檢查,大型請求可能會被用作阻斷服務攻擊向量。由於網路伺服器通常不執行深度請求檢查,因此無法在該層級執行類似的檢查。
DATA_UPLOAD_MAX_NUMBER_FIELDS
¶
預設值:1000
在引發 SuspiciousOperation
(TooManyFields
) 之前,可透過 GET 或 POST 接收的最大參數數量。您可以將此設定為None
來停用檢查。預期接收異常大量表單欄位的應用程式應調整此設定。
請求參數的數量與處理請求和填入 GET 和 POST 字典所需的時間量相關。如果未經檢查,大型請求可能會被用作阻斷服務攻擊向量。由於網路伺服器通常不執行深度請求檢查,因此無法在該層級執行類似的檢查。
DATA_UPLOAD_MAX_NUMBER_FILES
¶
預設值:100
在 multipart/form-data
編碼的請求中,透過 POST 接收的最大檔案數量,超過此數量將會引發 SuspiciousOperation
(TooManyFiles
) 錯誤。您可以將此值設定為 None
來停用此檢查。預期會接收大量檔案欄位的應用程式應調整此設定。
接受的檔案數量與處理請求所需的時間和記憶體量相關。如果未加檢查,大型請求可能被用作阻斷服務攻擊的載體。由於網頁伺服器通常不執行深入的請求檢查,因此無法在該層級執行類似的檢查。
DATABASE_ROUTERS
¶
預設值:[]
(空的列表)
用於決定執行資料庫查詢時要使用哪個資料庫的路由列表。
請參閱關於 多資料庫組態中的自動資料庫路由 的文件。
DATE_FORMAT
¶
預設值:'N j, Y'
(例如 2月 4, 2003
)
在系統的任何部分顯示日期欄位時使用的預設格式。請注意,地區設定指定的格式具有較高的優先權,並會改為套用。請參閱 允許的 日期 格式 字串
。
DATE_INPUT_FORMATS
¶
預設值
[
"%Y-%m-%d", # '2006-10-25'
"%m/%d/%Y", # '10/25/2006'
"%m/%d/%y", # '10/25/06'
"%b %d %Y", # 'Oct 25 2006'
"%b %d, %Y", # 'Oct 25, 2006'
"%d %b %Y", # '25 Oct 2006'
"%d %b, %Y", # '25 Oct, 2006'
"%B %d %Y", # 'October 25 2006'
"%B %d, %Y", # 'October 25, 2006'
"%d %B %Y", # '25 October 2006'
"%d %B, %Y", # '25 October, 2006'
]
在日期欄位輸入資料時將接受的格式列表。將按順序嘗試格式,使用第一個有效的格式。請注意,這些格式字串使用 Python 的 datetime 模組語法,而不是 date
模板篩選器的格式字串。
地區設定指定的格式具有較高的優先權,並會改為套用。
DATETIME_FORMAT
¶
預設值:'N j, Y, P'
(例如 2月 4, 2003, 下午 4 點
)
在系統的任何部分顯示日期時間欄位時使用的預設格式。請注意,地區設定指定的格式具有較高的優先權,並會改為套用。請參閱 允許的 日期 格式 字串
。
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'
"%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 %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'
]
在日期時間欄位輸入資料時將接受的格式列表。將按順序嘗試格式,使用第一個有效的格式。請注意,這些格式字串使用 Python 的 datetime 模組語法,而不是 date
模板篩選器的格式字串。僅限日期的格式不包含在內,因為日期時間欄位會在最後嘗試 DATE_INPUT_FORMATS
。
地區設定指定的格式具有較高的優先權,並會改為套用。
另請參閱 DATE_INPUT_FORMATS
和 TIME_INPUT_FORMATS
。
DEBUG
¶
預設值:False
一個布林值,用於開啟/關閉除錯模式。
永遠不要在開啟 DEBUG
的情況下將網站部署到生產環境。
除錯模式的主要功能之一是顯示詳細的錯誤頁面。如果您的應用程式在 DEBUG
為 True
時引發異常,Django 將顯示詳細的回溯,包括有關您環境的大量元數據,例如所有目前定義的 Django 設定 (來自 settings.py
)。
作為安全措施,Django 將*不會*包含可能敏感的設定,例如 SECRET_KEY
。具體而言,它將排除名稱包含以下任何內容的任何設定
'API'
'KEY'
'PASS'
'SECRET'
'SIGNATURE'
'TOKEN'
請注意,這些是*部分*匹配。'PASS'
也會匹配 PASSWORD,就像 'TOKEN'
也會匹配 TOKENIZED 等等。
儘管如此,請注意,您的除錯輸出始終會有不適合公開消費的部分。檔案路徑、組態選項等都為攻擊者提供了有關您伺服器的額外資訊。
同樣重要的是要記住,當在開啟 DEBUG
的情況下執行時,Django 會記住它執行的每個 SQL 查詢。這在您進行除錯時很有用,但它會迅速消耗生產伺服器上的記憶體。
最後,如果 DEBUG
為 False
,您還需要正確設定 ALLOWED_HOSTS
設定。未能這樣做將導致所有請求都以「錯誤請求 (400)」返回。
注意
為了方便起見,django-admin startproject
建立的預設 settings.py
檔案會設定 DEBUG = True
。
DEBUG_PROPAGATE_EXCEPTIONS
¶
預設值:False
如果設定為 True
,則會跳過 Django 對檢視函數的異常處理 (handler500
,或者如果 DEBUG
為 True
則使用除錯檢視) 和 500 回應的記錄 (django.request),並且異常會向上傳播。
這對於某些測試設定可能很有用。除非您希望您的網頁伺服器(而不是 Django)產生「內部伺服器錯誤」回應,否則不應在實際網站上使用此設定。在這種情況下,請確保您的伺服器不會在回應中顯示堆疊追蹤或其他敏感資訊。
DECIMAL_SEPARATOR
¶
預設值:'.'
(點)
格式化小數時使用的預設小數分隔符號。
請注意,地區設定指定的格式具有較高的優先權,並會改為套用。
另請參閱 NUMBER_GROUPING
、THOUSAND_SEPARATOR
和 USE_THOUSAND_SEPARATOR
。
DEFAULT_AUTO_FIELD
¶
預設值:'
django.db.models.AutoField
'
用於沒有具有 primary_key=True
欄位的模型的預設主鍵欄位類型。
DEFAULT_CHARSET
¶
預設值: 'utf-8'
如果沒有手動指定 MIME 類型,則用於所有 HttpResponse
物件的預設字元集。在建構 Content-Type
標頭時使用。
DEFAULT_EXCEPTION_REPORTER
¶
預設值:'
django.views.debug.ExceptionReporter
'
如果尚未將例外報告器類別指派給 HttpRequest
實例,則使用的預設例外報告器類別。請參閱 自訂錯誤報告。
DEFAULT_EXCEPTION_REPORTER_FILTER
¶
預設值: '
django.views.debug.SafeExceptionReporterFilter
'
如果尚未將例外報告器篩選類別指派給 HttpRequest
實例,則使用的預設例外報告器篩選類別。請參閱 篩選錯誤報告。
DEFAULT_FROM_EMAIL
¶
預設值: 'webmaster@localhost'
來自網站管理員的自動信件的預設電子郵件地址。此地址用於外寄電子郵件的 From:
標頭中,並且可以採用所選電子郵件傳送協定中有效的任何格式。
這不會影響傳送給 ADMINS
和 MANAGERS
的錯誤訊息。請參閱 SERVER_EMAIL
。
DEFAULT_INDEX_TABLESPACE
¶
預設值:''
(空字串)
如果後端支援(請參閱 表格空間),則用於未指定表格空間的欄位索引的預設表格空間。
DEFAULT_TABLESPACE
¶
預設值:''
(空字串)
如果後端支援(請參閱 表格空間),則用於未指定表格空間的模型的預設表格空間。
DISALLOWED_USER_AGENTS
¶
預設值:[]
(空的列表)
代表不允許訪問任何頁面的 User-Agent 字串的編譯後的正規表示式物件清單,系統範圍。用於機器人/爬蟲。僅在安裝 CommonMiddleware
時使用(請參閱 中介軟體)。
EMAIL_BACKEND
¶
預設值: '
django.core.mail.backends.smtp.EmailBackend
'
用於傳送電子郵件的後端。有關可用後端的列表,請參閱 電子郵件後端。
EMAIL_FILE_PATH
¶
預設值:未定義
檔案電子郵件後端 用於儲存輸出檔案的目錄。
EMAIL_HOST
¶
預設值: 'localhost'
用於傳送電子郵件的主機。
另請參閱 EMAIL_PORT
。
EMAIL_HOST_PASSWORD
¶
預設值:''
(空字串)
用於 EMAIL_HOST
中定義的 SMTP 伺服器的密碼。此設定與 EMAIL_HOST_USER
結合使用,以驗證 SMTP 伺服器。如果這些設定中的任何一個為空,Django 將不會嘗試驗證。
另請參閱 EMAIL_HOST_USER
。
EMAIL_HOST_USER
¶
預設值:''
(空字串)
用於 EMAIL_HOST
中定義的 SMTP 伺服器的使用者名稱。如果為空,Django 將不會嘗試驗證。
另請參閱 EMAIL_HOST_PASSWORD
。
EMAIL_PORT
¶
預設值: 25
用於 EMAIL_HOST
中定義的 SMTP 伺服器的連接埠。
EMAIL_SUBJECT_PREFIX
¶
預設值: '[Django] '
使用 django.core.mail.mail_admins
或 django.core.mail.mail_managers
傳送的電子郵件訊息的主旨行前綴。您可能需要包含尾隨空格。
EMAIL_USE_LOCALTIME
¶
預設值:False
是否以本機時區(True
)或 UTC(False
)傳送電子郵件訊息的 SMTP Date
標頭。
EMAIL_USE_TLS
¶
預設值:False
與 SMTP 伺服器通訊時是否使用 TLS(安全)連線。這用於明確的 TLS 連線,通常在連接埠 587 上。如果您遇到連線掛斷的問題,請參閱隱含 TLS 設定 EMAIL_USE_SSL
。
EMAIL_USE_SSL
¶
預設值:False
與 SMTP 伺服器通訊時是否使用隱含 TLS(安全)連線。在大多數電子郵件文件中,此類型的 TLS 連線稱為 SSL。它通常在連接埠 465 上使用。如果您遇到問題,請參閱明確的 TLS 設定 EMAIL_USE_TLS
。
請注意,EMAIL_USE_TLS
/EMAIL_USE_SSL
是互斥的,因此只能將這些設定中的一個設定為 True
。
EMAIL_SSL_CERTFILE
¶
預設值:None
如果 EMAIL_USE_SSL
或 EMAIL_USE_TLS
為 True
,您可以選擇性地指定用於 SSL 連線的 PEM 格式憑證鏈檔案的路徑。
EMAIL_SSL_KEYFILE
¶
預設值:None
如果 EMAIL_USE_SSL
或 EMAIL_USE_TLS
為 True
,您可以選擇性地指定用於 SSL 連接的 PEM 格式私鑰檔案路徑。
請注意,設定 EMAIL_SSL_CERTFILE
和 EMAIL_SSL_KEYFILE
不會導致任何憑證檢查。它們會被傳遞到底層的 SSL 連接。請參考 Python ssl.SSLContext.wrap_socket()
函式的說明文件,以了解如何處理憑證鏈檔案和私鑰檔案的詳細資訊。
EMAIL_TIMEOUT
¶
預設值:None
指定連線嘗試等阻塞操作的逾時時間(以秒為單位)。
FILE_UPLOAD_HANDLERS
¶
預設值
[
"django.core.files.uploadhandler.MemoryFileUploadHandler",
"django.core.files.uploadhandler.TemporaryFileUploadHandler",
]
用於上傳的處理程式清單。變更此設定可完全自訂,甚至替換 Django 的上傳流程。
詳情請參閱 管理檔案。
FILE_UPLOAD_MAX_MEMORY_SIZE
¶
預設值:2621440
(即 2.5 MB)。
上傳資料在被串流到檔案系統之前允許的最大大小(以位元組為單位)。詳情請參閱 管理檔案。
FILE_UPLOAD_DIRECTORY_PERMISSIONS
¶
預設值:None
在檔案上傳過程中建立的目錄所要套用的數字模式。
當使用 collectstatic
管理指令時,此設定也會決定收集的靜態目錄的預設權限。有關覆寫此設定的詳細資訊,請參閱 collectstatic
。
此值反映了 FILE_UPLOAD_PERMISSIONS
設定的功能和注意事項。
FILE_UPLOAD_PERMISSIONS
¶
預設值:0o644
要設定新上傳檔案的數字模式(即 0o644
)。有關這些模式的含義的詳細資訊,請參閱 os.chmod()
的說明文件。
如果為 None
,您將獲得與作業系統相關的行為。在大多數平台上,臨時檔案的模式將為 0o600
,而從記憶體儲存的檔案將使用系統標準的 umask 儲存。
基於安全考量,這些權限不會應用於儲存在 FILE_UPLOAD_TEMP_DIR
的臨時檔案。
當使用 collectstatic
管理指令時,此設定也會決定收集的靜態檔案的預設權限。有關覆寫此設定的詳細資訊,請參閱 collectstatic
。
警告
請務必在模式前面加上 0o
。
如果您不熟悉檔案模式,請注意 0o
前綴非常重要:它表示八進位數字,這是指定模式的方式。如果您嘗試使用 644
,您將會得到完全不正確的行為。
FILE_UPLOAD_TEMP_DIR
¶
預設值:None
在上傳檔案時,用於臨時儲存資料(通常是超過 FILE_UPLOAD_MAX_MEMORY_SIZE
的檔案)的目錄。如果為 None
,Django 將使用作業系統的標準臨時目錄。例如,在 *nix 風格的作業系統上,此預設值將為 /tmp
。
詳情請參閱 管理檔案。
FIRST_DAY_OF_WEEK
¶
預設值:0
(星期日)
一個代表一週第一天的數字。這在顯示日曆時特別有用。此值僅在不使用格式國際化或找不到目前地區設定的格式時使用。
該值必須是介於 0 到 6 之間的整數,其中 0 表示星期日,1 表示星期一,依此類推。
FIXTURE_DIRS
¶
預設值:[]
(空的列表)
除了每個應用程式的 fixtures
目錄之外,還會依搜尋順序搜尋 fixture 檔案的目錄清單。
請注意,即使在 Windows 上,這些路徑也應該使用 Unix 風格的正斜線。
請參閱 使用 fixtures 提供資料 和 Fixture 載入。
FORCE_SCRIPT_NAME
¶
預設值:None
如果不是 None
,則在任何 HTTP 請求中,此值將用作 SCRIPT_NAME
環境變數的值。此設定可用於覆寫伺服器提供的 SCRIPT_NAME
值,該值可能是慣用值的重寫版本或根本未提供。當提供 FORCE_SCRIPT_NAME
時,django.setup()
也會使用它來設定請求/回應週期之外的 URL 解析器腳本前綴(例如,在管理指令和獨立腳本中),以產生正確的 URL。
FORM_RENDERER
¶
預設值:'
django.forms.renderers.DjangoTemplates
'
用於呈現表單和表單小部件的類別。它必須實作 低階呈現 API。包含的表單呈現器有
FORMS_URLFIELD_ASSUME_HTTPS
¶
自 5.0 版起已棄用。
預設值:False
將此過渡設定設定為 True
,以便在 Django 5.x 發佈週期中選擇使用 "https"
作為 URLField.assume_scheme
的新預設值。
FORMAT_MODULE_PATH
¶
預設值:None
包含專案地區設定的自訂格式定義的 Python 套件的完整 Python 路徑。如果不是 None
,Django 會檢查以目前地區設定命名的目錄下的 formats.py
檔案,並使用此檔案中定義的格式。
包含格式定義的目錄名稱預期使用 地區設定名稱 標記法命名,例如 de
、pt_BR
、en_US
等。
例如,如果 FORMAT_MODULE_PATH
設定為 mysite.formats
,且目前語言為 en
(英文),Django 會預期類似以下的目錄樹
mysite/
formats/
__init__.py
en/
__init__.py
formats.py
您也可以將此設定設定為 Python 路徑的清單,例如
FORMAT_MODULE_PATH = [
"mysite.formats",
"some_app.formats",
]
當 Django 搜尋特定格式時,它會瀏覽所有指定的 Python 路徑,直到找到實際定義該格式的模組為止。這表示在清單中較上層的套件中定義的格式,會優先於較下層套件中的相同格式。
可用的格式如下
IGNORABLE_404_URLS
¶
預設值:[]
(空的列表)
編譯後的正規表示式物件清單,這些物件描述在透過電子郵件回報 HTTP 404 錯誤時應忽略的 URL(請參閱如何管理錯誤回報)。正規表示式會與 request
的 完整路徑(包括查詢字串,如果有的話)進行比對。如果您的網站沒有提供常見的請求檔案(例如 favicon.ico
或 robots.txt
),請使用此設定。
只有在啟用 BrokenLinkEmailsMiddleware
中介軟體時才會使用此設定(請參閱中介軟體)。
INSTALLED_APPS
¶
預設值:[]
(空的列表)
一個字串清單,指定在此 Django 安裝中啟用的所有應用程式。每個字串都應該是一個 Python 點式路徑,指向
應用程式配置類別(首選),或
包含應用程式的套件。
使用應用程式註冊表進行內省
您的程式碼不應直接存取 INSTALLED_APPS
。請改用 django.apps.apps
。
應用程式名稱和標籤在 INSTALLED_APPS
中必須是唯一的
應用程式的 名稱
— 指向應用程式套件的 Python 點式路徑 — 必須是唯一的。除了在另一個名稱下複製其程式碼之外,沒有辦法將同一個應用程式包含兩次。
應用程式的 標籤
— 預設是名稱的最後一部分 — 也必須是唯一的。例如,您不能同時包含 django.contrib.auth
和 myproject.auth
。但是,您可以使用定義不同 標籤
的自訂配置來重新標記應用程式。
無論 INSTALLED_APPS
參照應用程式配置類別還是應用程式套件,這些規則都適用。
當多個應用程式提供相同資源(樣板、靜態檔案、管理命令、翻譯)的不同版本時,在 INSTALLED_APPS
中首先列出的應用程式具有優先權。
INTERNAL_IPS
¶
預設值:[]
(空的列表)
一個 IP 位址字串清單,這些位址:
允許
debug()
內容處理器將一些變數新增到樣板內容中。即使未以工作人員使用者身分登入,也可以使用 admindocs 書籤。
在
AdminEmailHandler
電子郵件中,會被標記為「內部」(與「外部」相對)。
LANGUAGE_CODE
¶
預設值:'en-us'
一個代表此安裝的語言代碼的字串。這應採用標準的語言 ID 格式。例如,美國英語是 "en-us"
。另請參閱語言識別碼列表和國際化和本地化。
它有三個用途:
如果未使用地區設定中介軟體,則它會決定向所有使用者提供哪個翻譯。
如果地區設定中介軟體處於啟用狀態,則當無法確定使用者的首選語言或網站不支援該語言時,它會提供回退語言。當使用者首選語言中不存在給定文字的翻譯時,它還會提供回退翻譯。
如果透過
unlocalize
篩選器或{% localize off %}
標籤明確停用本地化,則它會提供將應用的回退本地化格式。 有關詳細資訊,請參閱在樣板中控制本地化。
有關更多詳細資訊,請參閱Django 如何發現語言偏好設定。
LANGUAGES
¶
預設值:所有可用語言的清單。此清單不斷成長,並且在此處包含副本將不可避免地迅速過時。您可以查看 django/conf/global_settings.py 中的翻譯語言的目前清單。
此清單是格式為(語言代碼,語言名稱
)的 2 元組清單 – 例如,('ja', '日語')
。這指定哪些語言可供選擇。請參閱國際化和本地化。
一般而言,預設值就足夠了。僅當您要將語言選擇限制為 Django 提供的語言的子集時,才設定此設定。
如果您定義自訂的 LANGUAGES
設定,您可以使用 gettext_lazy()
函式將語言名稱標記為翻譯字串。
這是一個範例設定檔:
from django.utils.translation import gettext_lazy as _
LANGUAGES = [
("de", _("German")),
("en", _("English")),
]
LANGUAGES_BIDI
¶
預設值:所有從右到左書寫的語言代碼的清單。您可以查看 django/conf/global_settings.py 中的這些語言的目前清單。
此清單包含從右到左書寫的語言的語言代碼。
一般來說,預設值就已足夠。只有在您想要將語言選擇限制為 Django 提供的語言子集時,才需要設定此設定。如果您定義了自訂的 LANGUAGES
設定,則雙向語言列表可能包含在特定網站上未啟用的語言代碼。
LOCALE_PATHS
¶
預設值:[]
(空的列表)
Django 在其中尋找翻譯檔案的目錄列表。請參閱Django 如何發現翻譯。
範例
LOCALE_PATHS = [
"/home/www/project/common_files/locale",
"/var/local/translations/locale",
]
Django 將在這些路徑中尋找包含實際翻譯檔案的 <locale_code>/LC_MESSAGES
目錄。
LOGGING
¶
預設值:一個記錄設定字典。
一個包含設定資訊的資料結構。當它不為空時,此資料結構的內容將作為參數傳遞給 LOGGING_CONFIG
中描述的設定方法。
在其他方面,當 DEBUG
為 False
時,預設記錄設定會將 HTTP 500 伺服器錯誤傳遞給電子郵件記錄處理程式。另請參閱設定記錄。
您可以透過查看 django/utils/log.py 來查看預設的記錄設定。
LOGGING_CONFIG
¶
預設值:'logging.config.dictConfig'
一個可呼叫程式的路徑,該程式將用於設定 Django 專案中的記錄。預設情況下,指向 Python 的 dictConfig 設定方法的一個實例。
如果您將 LOGGING_CONFIG
設定為 None
,則將會跳過記錄設定過程。
MANAGERS
¶
預設值:[]
(空的列表)
與 ADMINS
格式相同的列表,指定當 BrokenLinkEmailsMiddleware
啟用時,應該收到斷線連結通知的人員。
MEDIA_ROOT
¶
預設值:''
(空字串)
將保存使用者上傳檔案的目錄的絕對檔案系統路徑。
範例:"/var/www/example.com/media/"
另請參閱 MEDIA_URL
。
警告
MEDIA_ROOT
和 STATIC_ROOT
必須具有不同的值。在引入 STATIC_ROOT
之前,通常會依賴或回退到 MEDIA_ROOT
來提供靜態檔案;然而,由於這可能會造成嚴重的安全性問題,因此存在一個驗證檢查來防止這種情況發生。
MEDIA_URL
¶
預設值:''
(空字串)
處理從 MEDIA_ROOT
提供的媒體的 URL,用於管理儲存的檔案。如果設定為非空值,則必須以斜線結尾。您需要在開發和生產環境中設定這些檔案以進行提供。
如果您想在範本中使用 {{ MEDIA_URL }}
,請在 TEMPLATES
的 'context_processors'
選項中加入 'django.template.context_processors.media'
。
範例:"https://media.example.com/"
警告
如果您接受來自不受信任的使用者上傳的內容,則存在安全風險!請參閱安全指南中關於使用者上傳內容的說明以了解相關的緩解細節。
警告
MEDIA_URL
和 STATIC_URL
必須具有不同的值。請參閱 MEDIA_ROOT
了解更多詳細資訊。
注意
如果 MEDIA_URL
是相對路徑,則會以伺服器提供的 SCRIPT_NAME
值(如果未設定,則為 /
)作為前綴。這使得在子路徑中提供 Django 應用程式更容易,而無需在設定中新增額外的設定。
MIDDLEWARE
¶
預設值:None
要使用的中間件列表。請參閱中間件。
MIGRATION_MODULES
¶
預設值:{}
(空的字典)
一個字典,指定在每個應用程式的基礎上,可以在哪裡找到遷移模組。此設定的預設值為空字典,但遷移模組的預設套件名稱為 migrations
。
範例
{"blog": "blog.db_migrations"}
在此情況下,與 blog
應用程式相關的遷移將包含在 blog.db_migrations
套件中。
如果您提供 app_label
引數,makemigrations
將會自動建立套件(如果它尚不存在)。
當您為應用程式提供 None
作為值時,無論是否存在 migrations
子模組,Django 都會將應用程式視為沒有遷移的應用程式。例如,這可以在測試設定檔案中用於在測試時跳過遷移(仍會為應用程式的模型建立表格)。若要在測試期間停用所有應用程式的遷移,您可以將 MIGRATE
設定為 False
來代替。 如果在您的一般專案設定中使用 MIGRATION_MODULES
,請記住如果您想要為應用程式建立表格,請使用 migrate --run-syncdb
選項。
MONTH_DAY_FORMAT
¶
預設值:'F j'
當只顯示月份和日期時,在 Django 管理變更清單頁面上以及系統的其他部分中,用於日期欄位的預設格式。
例如,當 Django 管理變更清單頁面正按日期向下鑽取進行篩選時,給定日期的標頭會顯示日期和月份。不同的地區有不同的格式。例如,美式英語會說「January 1」,而西班牙語可能會說「1 Enero」。
請注意,相應的地區設定指定的格式具有較高的優先順序,並且會改為應用。
請參閱允許的 日期 格式 字串
。另請參閱 DATE_FORMAT
、 DATETIME_FORMAT
、TIME_FORMAT
和 YEAR_MONTH_FORMAT
。
NUMBER_GROUPING
¶
預設值:0
數字整數部分的分組位數。
常見用法是顯示千位分隔符。如果此設定為 0
,則不會對數字應用分組。如果此設定大於 0
,則會使用 THOUSAND_SEPARATOR
作為這些組之間的分隔符。
某些地區設定使用非統一的數字分組,例如 en_IN
中的 10,00,00,000
。對於這種情況,您可以提供一個序列,其中包含要應用數字組大小的數量。第一個數字定義小數點分隔符之前的組大小,後面的每個數字定義前面組的大小。如果序列以 -1
終止,則不會執行進一步的分組。如果序列以 0
終止,則最後一個組大小將用於數字的其餘部分。
用於 en_IN
的範例元組
NUMBER_GROUPING = (3, 2, 0)
請注意,地區設定指定的格式具有較高的優先權,並會改為套用。
另請參閱 DECIMAL_SEPARATOR
、THOUSAND_SEPARATOR
和 USE_THOUSAND_SEPARATOR
。
PREPEND_WWW
¶
預設值:False
是否在沒有 “www.” 子網域的 URL 前面加上它。這僅在安裝了 CommonMiddleware
時使用(請參閱 中介軟體)。另請參閱 APPEND_SLASH
。
ROOT_URLCONF
¶
預設值:未定義
一個字串,表示根 URL 設定檔的完整 Python 匯入路徑,例如 "mydjangoapps.urls"
。可以透過在傳入的 HttpRequest
物件上設定屬性 urlconf
來針對每個請求覆寫。有關詳細資訊,請參閱 Django 如何處理請求。
SECRET_KEY
¶
預設值:''
(空字串)
特定 Django 安裝的金鑰。這用於提供 密碼編譯簽名,並且應設定為唯一、不可預測的值。
django-admin startproject
會自動將隨機產生的 SECRET_KEY
新增到每個新專案中。
金鑰的使用不應假設它是文字或位元組。每次使用都應經過 force_str()
或 force_bytes()
轉換為所需的類型。
如果未設定 SECRET_KEY
,Django 將拒絕啟動。
金鑰用於
如果您使用的是
django.contrib.sessions.backends.cache
以外的任何其他工作階段後端,或使用預設的get_session_auth_hash()
,則所有工作階段。如果您使用的是
CookieStorage
或FallbackStorage
,則所有訊息。所有
PasswordResetView
權杖。任何使用 密碼編譯簽名 的情況,除非提供不同的金鑰。
當不再將金鑰設定為 SECRET_KEY
或包含在 SECRET_KEY_FALLBACKS
中時,上述所有內容都將失效。在輪換您的金鑰時,您應該暫時將舊金鑰移至 SECRET_KEY_FALLBACKS
。金鑰不適用於使用者的密碼,並且金鑰輪換不會影響它們。
注意
由 django-admin startproject
建立的預設 settings.py
檔案為方便起見會建立唯一的 SECRET_KEY
。
SECRET_KEY_FALLBACKS
¶
預設值: []
特定 Django 安裝的備用金鑰清單。這些用於允許輪換 SECRET_KEY
。
為了輪換您的金鑰,請設定新的 SECRET_KEY
並將先前的值移至 SECRET_KEY_FALLBACKS
的開頭。然後,當您準備好使工作階段、密碼重設權杖等使用它們過期時,請從 SECRET_KEY_FALLBACKS
的末尾移除舊值。
注意
簽署操作在計算上非常耗費資源。在 SECRET_KEY_FALLBACKS
中有多個舊金鑰值會對所有與先前金鑰不符的檢查增加額外的負擔。
因此,備用值應在適當的時間後移除,以便進行金鑰輪換。
金鑰值的使用不應假設它們是文字或位元組。每次使用都應經過 force_str()
或 force_bytes()
轉換為所需的類型。
SECURE_CONTENT_TYPE_NOSNIFF
¶
預設值:True
如果為 True
,SecurityMiddleware
會在所有尚未設定的響應中設定 X-Content-Type-Options: nosniff 標頭。
SECURE_CROSS_ORIGIN_OPENER_POLICY
¶
預設值: 'same-origin'
除非設定為 None
,否則 SecurityMiddleware
會將所有尚未設定的響應中的 跨來源開啟器政策 標頭設定為所提供的值。
SECURE_HSTS_INCLUDE_SUBDOMAINS
¶
預設值:False
如果為 True
,則 SecurityMiddleware
會將 includeSubDomains
指令新增至 HTTP Strict Transport Security 標頭。除非將 SECURE_HSTS_SECONDS
設定為非零值,否則它無效。
警告
不正確地設定此值可能會不可逆轉地(對於 SECURE_HSTS_SECONDS
的值)破壞您的網站。請先閱讀 HTTP Strict Transport Security 文件。
SECURE_HSTS_PRELOAD
¶
預設值:False
如果為 True
,則 SecurityMiddleware
會將 preload
指令新增至 HTTP Strict Transport Security 標頭。除非將 SECURE_HSTS_SECONDS
設定為非零值,否則它無效。
SECURE_HSTS_SECONDS
¶
預設值:0
如果設定為非零整數值,則 SecurityMiddleware
會在所有尚未設定的響應中設定 HTTP Strict Transport Security 標頭。
警告
不正確地設定此值可能會不可逆轉地(在一段時間內)破壞您的網站。請先閱讀 HTTP Strict Transport Security 文件。
SECURE_PROXY_SSL_HEADER
¶
預設值:None
一個元組,表示一個 HTTP 標頭/值組合,用於表示請求是安全的。這控制請求物件的 is_secure()
方法的行為。
預設情況下,is_secure()
會透過確認請求的 URL 是否使用 https://
來判斷請求是否安全。此方法對於 Django 的 CSRF 保護非常重要,並且可能會被您自己的程式碼或第三方應用程式使用。
但是,如果您的 Django 應用程式位於 Proxy 後方,Proxy 可能會「吞噬」原始請求是否使用 HTTPS 的資訊。如果 Proxy 和 Django 之間存在非 HTTPS 連線,則 is_secure()
將始終返回 False
– 即使對於最終使用者透過 HTTPS 發出的請求也是如此。相反地,如果 Proxy 和 Django 之間存在 HTTPS 連線,則 is_secure()
將始終返回 True
– 即使對於最初透過 HTTP 發出的請求也是如此。
在這種情況下,請設定您的 Proxy 以設定自訂 HTTP 標頭,告知 Django 請求是否透過 HTTPS 傳入,並設定 SECURE_PROXY_SSL_HEADER
,以便 Django 知道要尋找哪個標頭。
設定一個包含兩個元素的元組 – 要尋找的標頭名稱和所需的值。例如
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
這告訴 Django 信任來自我們 Proxy 的 X-Forwarded-Proto
標頭,並且當
標頭值為
'https'
時,保證請求是安全的(即,它最初是透過 HTTPS 傳入的),或在以逗號分隔的協定清單中(例如
'https,http,http'
),其初始、最左邊的值為'https'
。
只有在您控制您的 Proxy 或具有其他保證它會適當設定/移除此標頭的情況下,您才應該設定此設定。
請注意,標頭需要採用 request.META
所使用的格式 – 全部大寫,並且可能以 HTTP_
開頭。(請記住,Django 會在將標頭提供給 request.META
之前,自動將 'HTTP_'
添加到 x-標頭名稱的開頭。)
警告
修改此設定可能會損害您網站的安全性。在變更之前,請確保您完全了解您的設定。
在設定此設定之前,請確保以下所有條件均成立(假設使用上述範例中的值)
您的 Django 應用程式位於 Proxy 後方。
您的 Proxy 會從所有傳入的請求中移除
X-Forwarded-Proto
標頭,即使它包含以逗號分隔的協定清單也是如此。換句話說,如果最終使用者在其請求中包含該標頭,則 Proxy 會將其捨棄。您的 Proxy 會設定
X-Forwarded-Proto
標頭並將其傳送給 Django,但僅限於最初透過 HTTPS 傳入的請求。
如果以上任何條件不成立,您應該將此設定保留為 None
,並尋找其他方法來判斷 HTTPS,也許可以透過自訂中介軟體。
SECURE_REDIRECT_EXEMPT
¶
預設值:[]
(空的列表)
如果 URL 路徑符合此清單中的正規表示式,則請求不會被重新導向到 HTTPS。SecurityMiddleware
會從 URL 路徑中移除開頭斜線,因此模式不應包含它們,例如 SECURE_REDIRECT_EXEMPT = [r'^no-ssl/$', …]
。如果 SECURE_SSL_REDIRECT
為 False
,則此設定無效。
SECURE_REFERRER_POLICY
¶
預設值: 'same-origin'
如果已設定,SecurityMiddleware
會將 Referrer Policy 標頭設定為提供的值,並設定在所有尚未擁有該標頭的回應上。
SECURE_SSL_HOST
¶
預設值:None
如果為字串(例如 secure.example.com
),所有 SSL 重新導向都會被導向至此主機,而不是原始請求的主機(例如 www.example.com
)。如果 SECURE_SSL_REDIRECT
為 False
,則此設定無效。
SECURE_SSL_REDIRECT
¶
預設值:False
如果為 True
,SecurityMiddleware
會將所有非 HTTPS 請求重新導向至 HTTPS(除了符合 SECURE_REDIRECT_EXEMPT
中列出的正規表示式的 URL 之外)。
注意
如果將此設定設為 True
導致無限重新導向,則可能表示您的網站正在 Proxy 後方執行,並且無法判斷哪些請求是安全的,哪些不是。您的 Proxy 可能會設定標頭來指示安全請求;您可以透過找出該標頭是什麼,並相應地設定 SECURE_PROXY_SSL_HEADER
設定來解決此問題。
SERIALIZATION_MODULES
¶
預設值:未定義
包含序列化器定義的模組(以字串形式提供)的字典,並以該序列化類型的字串識別碼作為鍵。例如,若要定義 YAML 序列化器,請使用
SERIALIZATION_MODULES = {"yaml": "path.to.yaml_serializer"}
SERVER_EMAIL
¶
預設值:'root@localhost'
錯誤訊息的寄件者電子郵件地址,例如傳送給 ADMINS
和 MANAGERS
的訊息。此地址用於 From:
標頭中,並且可以採用所選電子郵件傳送協定中有效的任何格式。
為什麼我的電子郵件從不同的地址傳送?
此地址僅用於錯誤訊息。它並不是透過 send_mail()
傳送的一般電子郵件訊息的寄件者地址;對於該地址,請參閱 DEFAULT_FROM_EMAIL
。
SHORT_DATE_FORMAT
¶
預設值:'m/d/Y'
(例如 12/31/2003
)
可用於在範本上顯示日期欄位的格式。請注意,對應的地區設定格式具有較高的優先順序,並且將改為套用。請參閱 允許的日期格式字串
。
另請參閱 DATE_FORMAT
和 SHORT_DATETIME_FORMAT
。
SHORT_DATETIME_FORMAT
¶
預設值:'m/d/Y P'
(例如 12/31/2003 下午 4 點
)
可用於在範本上顯示日期時間欄位的格式。請注意,對應的地區設定格式具有較高的優先順序,並且將改為套用。請參閱 允許的日期格式字串
。
另請參閱 DATE_FORMAT
和 SHORT_DATE_FORMAT
。
SIGNING_BACKEND
¶
預設值:'django.core.signing.TimestampSigner'
用於簽署 Cookie 和其他資料的後端。
另請參閱 密碼編譯簽章 文件。
SILENCED_SYSTEM_CHECKS
¶
預設值:[]
(空的列表)
您希望永久確認和忽略的系統檢查框架產生的訊息識別碼清單(即 ["models.W001"]
)。已靜音的檢查將不會輸出到主控台。
另請參閱 系統檢查框架 文件。
STORAGES
¶
預設值
{
"default": {
"BACKEND": "django.core.files.storage.FileSystemStorage",
},
"staticfiles": {
"BACKEND": "django.contrib.staticfiles.storage.StaticFilesStorage",
},
}
包含要與 Django 一起使用的所有儲存設定的字典。它是一個巢狀字典,其內容將儲存別名對應到包含個別儲存選項的字典。
儲存可以具有您選擇的任何別名。但是,有兩個具有特殊意義的別名
用於管理檔案的
default
。'
django.core.files.storage.FileSystemStorage
'
是預設的儲存引擎。用於管理靜態檔案的
staticfiles
。'
django.contrib.staticfiles.storage.StaticFilesStorage
'
是預設的儲存引擎。
以下是一個 settings.py
片段範例,定義了一個名為 example
的自訂檔案儲存。
STORAGES = {
# ...
"example": {
"BACKEND": "django.core.files.storage.FileSystemStorage",
"OPTIONS": {
"location": "/example",
"base_url": "/example/",
},
},
}
OPTIONS
在初始化時會以 **kwargs
的形式傳遞到 BACKEND
。
可以從 django.core.files.storage.storages
取得可用的儲存後端實例。使用與 STORAGES
中的後端定義相對應的鍵。
我的值會與預設值合併嗎?
定義此設定會覆蓋預設值,而不會與其合併。
TEMPLATES
¶
預設值:[]
(空的列表)
一個包含所有 Django 要使用的模板引擎設定的列表。列表中的每個項目都是一個字典,包含個別引擎的選項。
以下是一個設置,告知 Django 模板引擎從每個已安裝應用程式內的 templates
子目錄載入模板。
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'
)來使用非 Django 隨附的模板後端。
NAME
¶
預設值:請參閱下方
此特定模板引擎的別名。它是一個識別符,允許選擇用於渲染的引擎。別名在所有已設定的模板引擎中必須是唯一的。
當未提供時,預設為定義引擎類別的模組名稱,即 BACKEND
的倒數第二個部分。例如,如果後端是 'mypackage.whatever.Backend'
,則其預設名稱為 'whatever'
。
DIRS
¶
預設值:[]
(空的列表)
引擎應依搜尋順序尋找模板原始檔的目錄。
APP_DIRS
¶
預設值:False
引擎是否應在已安裝的應用程式內尋找模板原始檔。
注意
由 django-admin startproject
建立的預設 settings.py
檔案會設定 'APP_DIRS': True
。
OPTIONS
¶
預設值:{}
(空字典)
要傳遞到模板後端的額外參數。可用的參數因模板後端而異。請參閱 DjangoTemplates
和 Jinja2
,了解內建後端的選項。
TEST_RUNNER
¶
預設值:'django.test.runner.DiscoverRunner'
用於啟動測試套件的類別名稱。請參閱使用不同的測試框架。
TEST_NON_SERIALIZED_APPS
¶
預設值:[]
(空的列表)
為了在 TransactionTestCase
和沒有事務的資料庫後端之間,還原測試之間的資料庫狀態,Django 會在開始測試執行時序列化所有應用程式的內容,以便在執行需要此功能的測試之前,從該副本重新載入。
這會減慢測試執行器的啟動時間;如果您知道某些應用程式不需要此功能,您可以將它們的完整名稱新增到此處(例如 'django.contrib.contenttypes'
)以將它們排除在此序列化程序之外。
THOUSAND_SEPARATOR
¶
預設值:','
(逗號)
格式化數字時使用的預設千位分隔符。只有當 USE_THOUSAND_SEPARATOR
為 True
且 NUMBER_GROUPING
大於 0
時,才會使用此設定。
請注意,地區設定指定的格式具有較高的優先權,並會改為套用。
另請參閱 NUMBER_GROUPING
、DECIMAL_SEPARATOR
和 USE_THOUSAND_SEPARATOR
。
TIME_FORMAT
¶
預設值:'P'
(例如 下午4點
)
在系統任何部分顯示時間欄位時使用的預設格式。請注意,locale 指定的格式具有較高的優先順序,將改為套用。請參閱允許的 日期 格式 字串
。
另請參閱 DATE_FORMAT
和 DATETIME_FORMAT
。
TIME_INPUT_FORMATS
¶
預設值
[
"%H:%M:%S", # '14:30:59'
"%H:%M:%S.%f", # '14:30:59.000200'
"%H:%M", # '14:30'
]
在時間欄位輸入資料時將接受的格式列表。將依序嘗試格式,使用第一個有效的格式。請注意,這些格式字串使用 Python 的 datetime 模組語法,而不是來自 date
模板篩選器的格式字串。
地區設定指定的格式具有較高的優先權,並會改為套用。
TIME_ZONE
¶
預設值:'America/Chicago'
表示此安裝時區的字串。請參閱時區列表。
注意
由於 Django 最初發布時將 TIME_ZONE
設定為 'America/Chicago'
,因此為了回溯相容性,全域設定(如果您的專案 settings.py
中未定義任何內容時使用)仍然是 'America/Chicago'
。新的專案模板預設為 'UTC'
。
請注意,這不一定是伺服器的時區。例如,一個伺服器可能會為多個 Django 驅動的網站提供服務,每個網站都有單獨的時區設定。
當 USE_TZ
為 False
時,這是 Django 將儲存所有日期時間的時區。當 USE_TZ
為 True
時,這是 Django 將用於在範本中顯示日期時間,以及解釋表單中輸入的日期時間的預設時區。
在 Unix 環境(已實作 time.tzset()
的環境)中,Django 會將 os.environ['TZ']
變數設定為您在 TIME_ZONE
設定中指定時區。因此,您的所有視圖和模型都會自動在此時區中運作。但是,如果您使用手動設定設定中所述的手動設定選項,Django 將不會設定 TZ
環境變數。如果 Django 沒有設定 TZ
環境變數,您必須確保您的進程在正確的環境中執行。
注意
Django 無法在 Windows 環境中可靠地使用其他時區。如果您在 Windows 上執行 Django,TIME_ZONE
必須設定為與系統時區相符。
USE_I18N
¶
預設值:True
一個布林值,指定是否應啟用 Django 的翻譯系統。這提供了一種關閉它的方法,以提高效能。如果將此值設定為 False
,Django 將進行一些最佳化,以避免載入翻譯機制。
另請參閱 LANGUAGE_CODE
和 USE_TZ
。
注意
由 django-admin startproject
建立的預設 settings.py
檔案為了方便起見,包含了 USE_I18N = True
。
USE_THOUSAND_SEPARATOR
¶
預設值:False
一個布林值,指定是否要使用千位分隔符顯示數字。當設定為 True
時,Django 會使用 NUMBER_GROUPING
和 THOUSAND_SEPARATOR
設定來格式化數字。後兩者設定也可能由地區設定決定,地區設定具有優先權。
另請參閱 DECIMAL_SEPARATOR
、NUMBER_GROUPING
和 THOUSAND_SEPARATOR
。
USE_TZ
¶
預設值:True
一個布林值,指定預設情況下日期時間是否會使用時區感知。如果將此值設定為 True
,Django 會在內部使用時區感知的日期時間。
當 USE_TZ
為 False 時,Django 會在本地時間使用樸素的日期時間,但解析 ISO 8601 格式的字串時除外,如果存在時區資訊,則會始終保留。
在較舊版本中,預設值為 False
。
USE_X_FORWARDED_HOST
¶
預設值:False
一個布林值,指定是否優先使用 X-Forwarded-Host
標頭,而不是 Host
標頭。只有在使用設定此標頭的 Proxy 時才應啟用此選項。
此設定優先於 USE_X_FORWARDED_PORT
。根據 RFC 7239 第 5.3 節,X-Forwarded-Host
標頭可以包含連接埠號碼,在這種情況下,您不應使用 USE_X_FORWARDED_PORT
。
USE_X_FORWARDED_PORT
¶
預設值:False
一個布林值,指定是否優先使用 X-Forwarded-Port
標頭,而不是 SERVER_PORT
META
變數。只有在使用設定此標頭的 Proxy 時才應啟用此選項。
USE_X_FORWARDED_HOST
優先於此設定。
WSGI_APPLICATION
¶
預設值:None
Django 內建伺服器(例如 runserver
)將使用的 WSGI 應用程式物件的完整 Python 路徑。django-admin startproject
管理命令將建立一個標準的 wsgi.py
檔案,其中包含一個 application
可呼叫物件,並將此設定指向該 application
。
如果未設定,將會使用 django.core.wsgi.get_wsgi_application()
的傳回值。在這種情況下,runserver
的行為將與先前的 Django 版本相同。
YEAR_MONTH_FORMAT
¶
預設值:'F Y'
在 Django 管理變更列表頁面上,以及可能由系統其他部分使用時,針對日期欄位預設使用的格式,在僅顯示年份和月份時使用。
例如,當 Django 管理變更列表頁面依日期向下鑽取篩選時,給定月份的標頭會顯示月份和年份。不同的地區設定有不同的格式。例如,美國英語會說「January 2006」,而另一個地區設定可能會說「2006/January」。
請注意,相應的地區設定指定的格式具有較高的優先順序,並且會改為應用。
請參閱 允許的 日期 格式 字串
。另請參閱 DATE_FORMAT
、DATETIME_FORMAT
、TIME_FORMAT
和 MONTH_DAY_FORMAT
。
X_FRAME_OPTIONS
¶
預設值:'DENY'
XFrameOptionsMiddleware
使用的 X-Frame-Options 標頭的預設值。請參閱點擊劫持保護文件。
Auth¶
針對 django.contrib.auth
的設定。
AUTHENTICATION_BACKENDS
¶
預設值:['django.contrib.auth.backends.ModelBackend']
在嘗試驗證使用者時使用的驗證後端類別清單(以字串表示)。有關詳細資訊,請參閱驗證後端文件。
AUTH_USER_MODEL
¶
預設值:'auth.User'
用於表示使用者的模型。請參閱替換自訂使用者模型。
警告
在專案的生命週期內(也就是說,一旦您建立並遷移了依賴於它的模型),您無法變更 AUTH_USER_MODEL 設定,否則會非常費力。它旨在在專案開始時設定,並且它所引用的模型必須在其所在的應用程式的第一次遷移中可用。有關更多詳細資訊,請參閱替換自訂使用者模型。
LOGIN_REDIRECT_URL
¶
預設值:'/accounts/profile/'
當 LoginView
沒有收到 next
GET 參數時,登入後將請求重新導向到的 URL 或已命名的 URL 模式。
LOGIN_URL
¶
預設值:'/accounts/login/'
當使用 login_required()
裝飾器、LoginRequiredMixin
、AccessMixin
,或當安裝 LoginRequiredMiddleware
時,請求會被重新導向至此 URL 或已命名的 URL 模式進行登入。
LOGOUT_REDIRECT_URL
¶
預設值:None
如果 LogoutView
沒有 next_page
屬性,則登出後請求會被重新導向至此 URL 或已命名的 URL 模式。
如果為 None
,則不會執行重新導向,並會渲染登出檢視。
PASSWORD_RESET_TIMEOUT
¶
預設值:259200
(3 天,單位為秒)
密碼重設連結的有效秒數。
由 PasswordResetConfirmView
使用。
注意
縮短此逾時值並不會對攻擊者暴力破解密碼重設權杖的能力造成任何影響。權杖的設計本身就具有防止暴力破解的安全性,無需任何逾時限制。
此逾時設定的存在是為了防範一些不太可能發生的攻擊情境,例如有人存取了可能包含舊的、未使用的密碼重設權杖的電子郵件存檔。
PASSWORD_HASHERS
¶
請參閱Django 如何儲存密碼。
預設值
[
"django.contrib.auth.hashers.PBKDF2PasswordHasher",
"django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher",
"django.contrib.auth.hashers.Argon2PasswordHasher",
"django.contrib.auth.hashers.BCryptSHA256PasswordHasher",
"django.contrib.auth.hashers.ScryptPasswordHasher",
]
AUTH_PASSWORD_VALIDATORS
¶
預設值:[]
(空的列表)
用於檢查使用者密碼強度的驗證器列表。有關詳細資訊,請參閱密碼驗證。預設情況下,不會執行任何驗證,所有密碼都會被接受。
訊息¶
MESSAGE_LEVEL
¶
預設值:messages.INFO
設定訊息框架將記錄的最低訊息等級。有關詳細資訊,請參閱訊息等級。
避免循環匯入
如果您在設定檔中覆寫 MESSAGE_LEVEL
並依賴任何內建常數,則必須直接匯入常數模組以避免潛在的循環匯入,例如:
from django.contrib.messages import constants as message_constants
MESSAGE_LEVEL = message_constants.DEBUG
如果需要,您可以根據上述常數表中的值,直接指定常數的數值。
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'
有關詳細資訊,請參閱訊息儲存後端。
使用 cookie 的後端 - CookieStorage
和 FallbackStorage
- 在設定其 cookie 時,會使用 SESSION_COOKIE_DOMAIN
、SESSION_COOKIE_SECURE
和 SESSION_COOKIE_HTTPONLY
的值。
Session¶
SESSION_CACHE_ALIAS
¶
預設值:'default'
如果您正在使用基於快取的 session 儲存,此設定會選擇要使用的快取。
SESSION_ENGINE
¶
預設值:'django.contrib.sessions.backends.db'
控制 Django 儲存 session 資料的位置。包含的引擎有
'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'
請參閱 設定 session 引擎 以取得更多詳細資訊。
SESSION_EXPIRE_AT_BROWSER_CLOSE
¶
預設值:False
是否在使用者關閉瀏覽器時過期 session。請參閱 瀏覽器長度 session 與永久 session。
SESSION_FILE_PATH
¶
預設值:None
如果您使用基於檔案的 session 儲存,此設定會設定 Django 儲存 session 資料的目錄。當使用預設值 (None
) 時,Django 將會使用系統的標準暫存目錄。
SESSION_SAVE_EVERY_REQUEST
¶
預設值:False
是否在每次請求時都儲存 session 資料。如果此設定為 False
(預設),則只有在 session 資料被修改時才會儲存 — 也就是說,只有在任何字典值被賦值或刪除時。即使啟用此設定,也不會建立空的 session。
SESSION_SERIALIZER
¶
預設值:'django.contrib.sessions.serializers.JSONSerializer'
用於序列化 session 資料的序列化器類別的完整導入路徑。包含的序列化器是
'django.contrib.sessions.serializers.JSONSerializer'
請參閱 Session 序列化 以取得詳細資訊。
網站¶
django.contrib.sites
的設定。
SITE_ID
¶
預設值:未定義
django_site
資料庫表格中目前網站的 ID(整數)。這是為了讓應用程式資料可以連結到特定的網站,並且單一資料庫可以管理多個網站的內容。
靜態檔案¶
django.contrib.staticfiles
的設定。
STATIC_ROOT
¶
預設值:None
collectstatic
將會收集要部署的靜態檔案的目錄的絕對路徑。
範例:"/var/www/example.com/static/"
如果已啟用 staticfiles contrib 應用程式(如預設專案範本中所示),collectstatic
管理命令會將靜態檔案收集到此目錄中。請參閱關於管理靜態檔案的教學文件以取得更多使用上的詳細資訊。
警告
這應該是一個最初為空的目標目錄,用於將靜態檔案從它們的永久位置收集到一個目錄中,以便於部署;它**不是**永久儲存靜態檔案的地方。您應該將其儲存在 staticfiles 的 finders
會找到的目錄中,預設情況下,這些目錄是 'static/'
應用程式子目錄,以及您包含在 STATICFILES_DIRS
中的任何目錄。
STATIC_URL
¶
預設值:None
當參考位於 STATIC_ROOT
中的靜態檔案時要使用的 URL。
範例:"static/"
或 "https://static.example.com/"
如果不是 None
,這將被用作 資產定義(Media
類別)和 staticfiles 應用程式 的基礎路徑。
如果設定為非空值,則必須以斜線結尾。
您可能需要在開發環境中設定這些檔案以供使用,而且絕對需要在生產環境中設定。
注意
如果 STATIC_URL
是相對路徑,那麼它將會加上伺服器提供的 SCRIPT_NAME
值(如果未設定則為 /
)。這使得在子路徑中提供 Django 應用程式更容易,而無需在設定中新增額外的設定。
STATICFILES_DIRS
¶
預設值:[]
(空的列表)
如果啟用 FileSystemFinder
尋找器,例如您使用 collectstatic
或 findstatic
管理命令,或使用靜態檔案服務檢視時,此設定會定義 staticfiles 應用程式將會遍歷的其他位置。
這應該設定為字串列表,其中包含指向您的額外檔案目錄的完整路徑,例如:
STATICFILES_DIRS = [
"/home/special.polls.com/polls/static",
"/home/polls.com/polls/static",
"/opt/webfiles/common",
]
請注意,這些路徑應該使用 Unix 風格的正斜線,即使在 Windows 上也一樣 (例如,"C:/Users/user/mysite/extra_static_content"
)。
前綴 (選用)¶
如果您想使用額外的命名空間來引用其中一個位置的檔案,您可以選擇性地提供一個前綴作為 (prefix, path)
元組,例如:
STATICFILES_DIRS = [
# ...
("downloads", "/opt/webfiles/stats"),
]
例如,假設您已將 STATIC_URL
設定為 'static/'
,則 collectstatic
管理命令會將 “stats” 檔案收集到 STATIC_ROOT
的 'downloads'
子目錄中。
這樣您就可以在範本中使用 '/static/downloads/polls_20101022.tar.gz'
來引用本地檔案 '/opt/webfiles/stats/polls_20101022.tar.gz'
,例如:
<a href="{% static 'downloads/polls_20101022.tar.gz' %}">
STATICFILES_FINDERS
¶
預設值
[
"django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
]
知道如何在各種位置尋找靜態檔案的尋找器後端列表。
預設會尋找儲存在 STATICFILES_DIRS
設定中的檔案(使用 django.contrib.staticfiles.finders.FileSystemFinder
)以及每個應用程式的 static
子目錄中的檔案(使用 django.contrib.staticfiles.finders.AppDirectoriesFinder
)。如果存在多個同名檔案,將會使用找到的第一個檔案。
預設會停用一個尋找器:django.contrib.staticfiles.finders.DefaultStorageFinder
。如果將其加入到您的 STATICFILES_FINDERS
設定中,它將會在 STORAGES
設定中由 default
鍵定義的預設檔案儲存空間中尋找靜態檔案。
注意
當使用 AppDirectoriesFinder
尋找器時,請確保透過將應用程式加入到您網站的 INSTALLED_APPS
設定中,讓 staticfiles 可以找到您的應用程式。
靜態檔案尋找器目前被視為私有介面,因此這個介面沒有文件說明。
核心設定主題索引¶
快取¶
資料庫¶
除錯¶
電子郵件¶
錯誤回報¶
檔案上傳¶
表單¶
全球化 (i18n
/l10n
)¶
國際化 (i18n
)¶
在地化 (l10n
)¶
HTTP¶
安全性