設定

警告

覆寫設定時請小心,尤其是當預設值為非空列表或字典時,例如 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=FalseAdminEmailHandlerLOGGING 中設定時(預設情況下完成),Django 會將請求/回應週期中引發的例外狀況詳細資訊透過電子郵件發送給這些人員。

列表中的每個項目都應為 (完整姓名, 電子郵件地址) 的元組。範例

[("John", "john@example.com"), ("Mary", "mary@example.com")]

ALLOWED_HOSTS

預設值:[] (空的列表)

代表此 Django 網站可以服務的主機/網域名稱的字串列表。這是一種安全措施,可防止 HTTP 主機標頭攻擊,即使在許多看似安全的網路伺服器設定下,這種攻擊也是有可能的。

此列表中的值可以是完整限定名稱(例如 'www.example.com'),在這種情況下,它們將與請求的 Host 標頭完全匹配(不區分大小寫,不包括連接埠)。以句點開頭的值可以用作子網域萬用字元:'.example.com' 將匹配 example.comwww.example.comexample.com 的任何其他子網域。'*' 的值將匹配任何內容;在這種情況下,您有責任提供您自己的 Host 標頭驗證(可能在中間件中;如果是這樣,則此中間件必須在 MIDDLEWARE 中列出)。

Django 也允許任何項目的 完整限定網域名稱 (FQDN)。某些瀏覽器會在 Host 標頭中包含尾隨點,Django 在執行主機驗證時會將其剝離。

如果 Host 標頭(或如果啟用 USE_X_FORWARDED_HOST,則為 X-Forwarded-Host)與此列表中的任何值不匹配,則 django.http.HttpRequest.get_host() 方法將引發 SuspiciousOperation

DEBUGTrueALLOWED_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_SESSIONSSessionMiddleware 必須出現在 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

一個代表此資料庫連線時區的字串,或 NoneDATABASES 設定的此內部選項接受與一般 TIME_ZONE 設定相同的值。

USE_TZTrue 時,從資料庫讀取日期時間會傳回具有時區感知功能的日期時間,如果未設定為 None,則時區設定為此選項的值,否則為 UTC。

USE_TZFalse 時,設定此選項會發生錯誤。

  • 如果資料庫後端不支援時區(例如 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) 表空間。DATAFILEDATAFILE_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.bodyrequest.POST 時會執行檢查,並根據排除任何檔案上傳資料的總請求大小計算。您可以將此設定為None來停用檢查。預期接收異常大型表單提交的應用程式應調整此設定。

請求資料量與處理請求和填入 GET 和 POST 字典所需的記憶體量相關。如果未經檢查,大型請求可能會被用作阻斷服務攻擊向量。由於網路伺服器通常不執行深度請求檢查,因此無法在該層級執行類似的檢查。

另請參閱FILE_UPLOAD_MAX_MEMORY_SIZE

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)

在系統的任何部分顯示日期欄位時使用的預設格式。請注意,地區設定指定的格式具有較高的優先權,並會改為套用。請參閱 允許的 日期 格式 字串

另請參閱 DATETIME_FORMATTIME_FORMATSHORT_DATE_FORMAT

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_INPUT_FORMATSTIME_INPUT_FORMATS

DATETIME_FORMAT

預設值:'N j, Y, P' (例如 2月 4, 2003, 下午 4 )

在系統的任何部分顯示日期時間欄位時使用的預設格式。請注意,地區設定指定的格式具有較高的優先權,並會改為套用。請參閱 允許的 日期 格式 字串

另請參閱 DATE_FORMATTIME_FORMATSHORT_DATETIME_FORMAT

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_FORMATSTIME_INPUT_FORMATS

DEBUG

預設值:False

一個布林值,用於開啟/關閉除錯模式。

永遠不要在開啟 DEBUG 的情況下將網站部署到生產環境。

除錯模式的主要功能之一是顯示詳細的錯誤頁面。如果您的應用程式在 DEBUGTrue 時引發異常,Django 將顯示詳細的回溯,包括有關您環境的大量元數據,例如所有目前定義的 Django 設定 (來自 settings.py)。

作為安全措施,Django 將*不會*包含可能敏感的設定,例如 SECRET_KEY。具體而言,它將排除名稱包含以下任何內容的任何設定

  • 'API'

  • 'KEY'

  • 'PASS'

  • 'SECRET'

  • 'SIGNATURE'

  • 'TOKEN'

請注意,這些是*部分*匹配。'PASS' 也會匹配 PASSWORD,就像 'TOKEN' 也會匹配 TOKENIZED 等等。

儘管如此,請注意,您的除錯輸出始終會有不適合公開消費的部分。檔案路徑、組態選項等都為攻擊者提供了有關您伺服器的額外資訊。

同樣重要的是要記住,當在開啟 DEBUG 的情況下執行時,Django 會記住它執行的每個 SQL 查詢。這在您進行除錯時很有用,但它會迅速消耗生產伺服器上的記憶體。

最後,如果 DEBUGFalse,您還需要正確設定 ALLOWED_HOSTS 設定。未能這樣做將導致所有請求都以「錯誤請求 (400)」返回。

注意

為了方便起見,django-admin startproject 建立的預設 settings.py 檔案會設定 DEBUG = True

DEBUG_PROPAGATE_EXCEPTIONS

預設值:False

如果設定為 True,則會跳過 Django 對檢視函數的異常處理 (handler500,或者如果 DEBUGTrue 則使用除錯檢視) 和 500 回應的記錄 (django.request),並且異常會向上傳播。

這對於某些測試設定可能很有用。除非您希望您的網頁伺服器(而不是 Django)產生「內部伺服器錯誤」回應,否則不應在實際網站上使用此設定。在這種情況下,請確保您的伺服器不會在回應中顯示堆疊追蹤或其他敏感資訊。

DECIMAL_SEPARATOR

預設值:'.' (點)

格式化小數時使用的預設小數分隔符號。

請注意,地區設定指定的格式具有較高的優先權,並會改為套用。

另請參閱 NUMBER_GROUPINGTHOUSAND_SEPARATORUSE_THOUSAND_SEPARATOR

DEFAULT_AUTO_FIELD

預設值:'django.db.models.AutoField'

用於沒有具有 primary_key=True 欄位的模型的預設主鍵欄位類型。

遷移自動建立的 through 表格

當為多對多關係建立新的自動產生的關聯表時,將會採用 DEFAULT_AUTO_FIELD 的值。

不幸的是,現有自動產生關聯表的主鍵目前無法透過遷移框架更新。

這表示如果您切換 DEFAULT_AUTO_FIELD 的值,然後產生遷移,相關模型的主鍵將會更新,關聯表的外鍵也會更新,但自動產生的關聯表的主鍵將不會被遷移。

為了處理這個問題,您應該在您的遷移中加入 RunSQL 操作,以執行所需的 ALTER TABLE 步驟。您可以透過 sqlmigratedbshell 或使用欄位的 remote_field.through._meta.db_table 屬性來檢查現有的資料表名稱。

明確定義的關聯模型已經由遷移系統處理。

允許對現有自動產生的關聯表的主鍵進行自動遷移 可能會在稍後實作

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: 標頭中,並且可以採用所選電子郵件傳送協定中有效的任何格式。

這不會影響傳送給 ADMINSMANAGERS 的錯誤訊息。請參閱 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_adminsdjango.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_SSLEMAIL_USE_TLSTrue,您可以選擇性地指定用於 SSL 連線的 PEM 格式憑證鏈檔案的路徑。

EMAIL_SSL_KEYFILE

預設值:None

如果 EMAIL_USE_SSLEMAIL_USE_TLSTrue,您可以選擇性地指定用於 SSL 連接的 PEM 格式私鑰檔案路徑。

請注意,設定 EMAIL_SSL_CERTFILEEMAIL_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)。

上傳資料在被串流到檔案系統之前允許的最大大小(以位元組為單位)。詳情請參閱 管理檔案

另請參閱 DATA_UPLOAD_MAX_MEMORY_SIZE

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

在 Django 5.0 中新增。

自 5.0 版起已棄用。

預設值:False

將此過渡設定設定為 True,以便在 Django 5.x 發佈週期中選擇使用 "https" 作為 URLField.assume_scheme 的新預設值。

FORMAT_MODULE_PATH

預設值:None

包含專案地區設定的自訂格式定義的 Python 套件的完整 Python 路徑。如果不是 None,Django 會檢查以目前地區設定命名的目錄下的 formats.py 檔案,並使用此檔案中定義的格式。

包含格式定義的目錄名稱預期使用 地區設定名稱 標記法命名,例如 dept_BRen_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.icorobots.txt),請使用此設定。

只有在啟用 BrokenLinkEmailsMiddleware 中介軟體時才會使用此設定(請參閱中介軟體)。

INSTALLED_APPS

預設值:[] (空的列表)

一個字串清單,指定在此 Django 安裝中啟用的所有應用程式。每個字串都應該是一個 Python 點式路徑,指向

  • 應用程式配置類別(首選),或

  • 包含應用程式的套件。

了解更多關於應用程式配置的資訊.

使用應用程式註冊表進行內省

您的程式碼不應直接存取 INSTALLED_APPS。請改用 django.apps.apps

應用程式名稱和標籤在 INSTALLED_APPS 中必須是唯一的

應用程式的 名稱 — 指向應用程式套件的 Python 點式路徑 — 必須是唯一的。除了在另一個名稱下複製其程式碼之外,沒有辦法將同一個應用程式包含兩次。

應用程式的 標籤 — 預設是名稱的最後一部分 — 也必須是唯一的。例如,您不能同時包含 django.contrib.authmyproject.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 中描述的設定方法。

在其他方面,當 DEBUGFalse 時,預設記錄設定會將 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_ROOTSTATIC_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_URLSTATIC_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_FORMATDATETIME_FORMATTIME_FORMATYEAR_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_SEPARATORTHOUSAND_SEPARATORUSE_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 將拒絕啟動。

警告

請將此值保密。

使用已知的 SECRET_KEY 執行 Django 會破壞 Django 的許多安全保護,並可能導致權限提升和遠端程式碼執行漏洞。

金鑰用於

當不再將金鑰設定為 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

如果為 TrueSecurityMiddleware 會在所有尚未設定的響應中設定 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_REDIRECTFalse,則此設定無效。

SECURE_REFERRER_POLICY

預設值: 'same-origin'

如果已設定,SecurityMiddleware 會將 Referrer Policy 標頭設定為提供的值,並設定在所有尚未擁有該標頭的回應上。

SECURE_SSL_HOST

預設值:None

如果為字串(例如 secure.example.com),所有 SSL 重新導向都會被導向至此主機,而不是原始請求的主機(例如 www.example.com)。如果 SECURE_SSL_REDIRECTFalse,則此設定無效。

SECURE_SSL_REDIRECT

預設值:False

如果為 TrueSecurityMiddleware 會將所有非 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'

錯誤訊息的寄件者電子郵件地址,例如傳送給 ADMINSMANAGERS 的訊息。此地址用於 From: 標頭中,並且可以採用所選電子郵件傳送協定中有效的任何格式。

為什麼我的電子郵件從不同的地址傳送?

此地址僅用於錯誤訊息。它並不是透過 send_mail() 傳送的一般電子郵件訊息的寄件者地址;對於該地址,請參閱 DEFAULT_FROM_EMAIL

SHORT_DATE_FORMAT

預設值:'m/d/Y' (例如 12/31/2003)

可用於在範本上顯示日期欄位的格式。請注意,對應的地區設定格式具有較高的優先順序,並且將改為套用。請參閱 允許的日期格式字串

另請參閱 DATE_FORMATSHORT_DATETIME_FORMAT

SHORT_DATETIME_FORMAT

預設值:'m/d/Y P' (例如 12/31/2003 下午 4 )

可用於在範本上顯示日期時間欄位的格式。請注意,對應的地區設定格式具有較高的優先順序,並且將改為套用。請參閱 允許的日期格式字串

另請參閱 DATE_FORMATSHORT_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 一起使用的所有儲存設定的字典。它是一個巢狀字典,其內容將儲存別名對應到包含個別儲存選項的字典。

儲存可以具有您選擇的任何別名。但是,有兩個具有特殊意義的別名

以下是一個 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

預設值:{}(空字典)

要傳遞到模板後端的額外參數。可用的參數因模板後端而異。請參閱 DjangoTemplatesJinja2,了解內建後端的選項。

TEST_RUNNER

預設值:'django.test.runner.DiscoverRunner'

用於啟動測試套件的類別名稱。請參閱使用不同的測試框架

TEST_NON_SERIALIZED_APPS

預設值:[] (空的列表)

為了在 TransactionTestCase 和沒有事務的資料庫後端之間,還原測試之間的資料庫狀態,Django 會在開始測試執行時序列化所有應用程式的內容,以便在執行需要此功能的測試之前,從該副本重新載入。

這會減慢測試執行器的啟動時間;如果您知道某些應用程式不需要此功能,您可以將它們的完整名稱新增到此處(例如 'django.contrib.contenttypes')以將它們排除在此序列化程序之外。

THOUSAND_SEPARATOR

預設值:',' (逗號)

格式化數字時使用的預設千位分隔符。只有當 USE_THOUSAND_SEPARATORTrueNUMBER_GROUPING 大於 0 時,才會使用此設定。

請注意,地區設定指定的格式具有較高的優先權,並會改為套用。

另請參閱 NUMBER_GROUPINGDECIMAL_SEPARATORUSE_THOUSAND_SEPARATOR

TIME_FORMAT

預設值:'P'(例如 下午4點

在系統任何部分顯示時間欄位時使用的預設格式。請注意,locale 指定的格式具有較高的優先順序,將改為套用。請參閱允許的 日期 格式 字串

另請參閱 DATE_FORMATDATETIME_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 模板篩選器的格式字串。

地區設定指定的格式具有較高的優先權,並會改為套用。

另請參閱 DATE_INPUT_FORMATSDATETIME_INPUT_FORMATS

TIME_ZONE

預設值:'America/Chicago'

表示此安裝時區的字串。請參閱時區列表

注意

由於 Django 最初發布時將 TIME_ZONE 設定為 'America/Chicago',因此為了回溯相容性,全域設定(如果您的專案 settings.py 中未定義任何內容時使用)仍然是 'America/Chicago'。新的專案模板預設為 'UTC'

請注意,這不一定是伺服器的時區。例如,一個伺服器可能會為多個 Django 驅動的網站提供服務,每個網站都有單獨的時區設定。

USE_TZFalse 時,這是 Django 將儲存所有日期時間的時區。當 USE_TZTrue 時,這是 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_CODEUSE_TZ

注意

django-admin startproject 建立的預設 settings.py 檔案為了方便起見,包含了 USE_I18N = True

USE_THOUSAND_SEPARATOR

預設值:False

一個布林值,指定是否要使用千位分隔符顯示數字。當設定為 True 時,Django 會使用 NUMBER_GROUPINGTHOUSAND_SEPARATOR 設定來格式化數字。後兩者設定也可能由地區設定決定,地區設定具有優先權。

另請參閱 DECIMAL_SEPARATORNUMBER_GROUPINGTHOUSAND_SEPARATOR

USE_TZ

預設值:True

一個布林值,指定預設情況下日期時間是否會使用時區感知。如果將此值設定為 True,Django 會在內部使用時區感知的日期時間。

USE_TZ 為 False 時,Django 會在本地時間使用樸素的日期時間,但解析 ISO 8601 格式的字串時除外,如果存在時區資訊,則會始終保留。

另請參閱 TIME_ZONEUSE_I18N

在 Django 5.0 中變更

在較舊版本中,預設值為 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_FORMATDATETIME_FORMATTIME_FORMATMONTH_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() 裝飾器、LoginRequiredMixinAccessMixin,或當安裝 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

預設值:[] (空的列表)

用於檢查使用者密碼強度的驗證器列表。有關詳細資訊,請參閱密碼驗證。預設情況下,不會執行任何驗證,所有密碼都會被接受。

訊息

django.contrib.messages 的設定。

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 的後端 - CookieStorageFallbackStorage - 在設定其 cookie 時,會使用 SESSION_COOKIE_DOMAINSESSION_COOKIE_SECURESESSION_COOKIE_HTTPONLY 的值。

MESSAGE_TAGS

預設值

{
    messages.DEBUG: "debug",
    messages.INFO: "info",
    messages.SUCCESS: "success",
    messages.WARNING: "warning",
    messages.ERROR: "error",
}

此設定會將訊息等級對應到訊息標籤,訊息標籤通常會以 HTML 中的 CSS 類別呈現。如果您指定一個值,它會擴充預設值。這表示您只需要指定您需要覆寫的值。有關詳細資訊,請參閱上述顯示訊息

避免循環匯入

如果您在設定檔中覆寫 MESSAGE_TAGS 並依賴任何內建常數,則必須直接匯入 constants 模組以避免潛在的循環匯入,例如:

from django.contrib.messages import constants as message_constants

MESSAGE_TAGS = {message_constants.INFO: ""}

如果需要,您可以根據上述常數表中的值,直接指定常數的數值。

Session

django.contrib.sessions 的設定。

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 管理命令會將靜態檔案收集到此目錄中。請參閱關於管理靜態檔案的教學文件以取得更多使用上的詳細資訊。

警告

這應該是一個最初為空的目標目錄,用於將靜態檔案從它們的永久位置收集到一個目錄中,以便於部署;它**不是**永久儲存靜態檔案的地方。您應該將其儲存在 staticfilesfinders 會找到的目錄中,預設情況下,這些目錄是 '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 尋找器,例如您使用 collectstaticfindstatic 管理命令,或使用靜態檔案服務檢視時,此設定會定義 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

記錄

模型

安全性

序列化

範本

測試

網址

回到頂端