1. 程式人生 > >django核心配置項

django核心配置項

Django的預設配置檔案中,包含上百條配置專案,其中很多是我們‘一輩子’都不碰到或者不需要單獨配置的,這些專案在需要的時候再去查手冊。

強調:配置的預設值不是在settings.py檔案中!不要以為settings.py中的配置值就是預設值,參考前文。settings.py是使用django-admin startproject xxx命令時,額外給我們建立的。

下面介紹的是61個相對比較常用和重要的配置項,按字母順序排序,但是最後部分是cache、auth、message、session、static等的配置。

  1. ADMINS
  2. ALLOWED_HOSTS
  3. APPEND_SLASH
  4. DATABASES
  5. DATE_FORMAT
  6. DATE_INPUT_FORMATS
  7. DATETIME_FORMAT
  8. DATETIME_INPUT_FORMATS
  9. DEBUG
  10. DEFAULT_CHARSET
  11. DEFAULT_CONTENT_TYPE
  12. DEFAULT_FROM_EMAIL
  13. DISALLOWED_USER_AGENTS
  14. EMAIL_BACKEND
  15. EMAIL_FILE_PATH
  16. EMAIL_HOST
  17. EMAIL_HOST_PASSWORD
  18. EMAIL_HOST_USER
  19. EMAIL_PORT
  20. EMAIL_SUBJECT_PREFIX
  21. EMAIL_USE_TLS
  22. EMAIL_USE_SSL
  23. EMAIL_SSL_CERTFILE
  24. EMAIL_SSL_KEYFILE
  25. EMAIL_TIMEOUT
  26. FILE_CHARSET
  27. INSTALLED_APPS
  28. LANGUAGE_CODE
  29. LANGUAGES
  30. LOCALE_PATHS
  31. LOGGING
  32. LOGGING_CONFIG
  33. MEDIA_ROOT
  34. MEDIA_URL
  35. MIDDLEWARE
  36. ROOT_URLCONF
  37. SECRET_KEY
  38. TEMPLATES
  39. TIME_ZONE
  40. USE_I18N
  41. USE_L10N
  42. USE_TZ
  43. WSGI_APPLICATION
  44. CACHES
  45. AUTHENTICATION_BACKENDS
  46. AUTH_USER_MODEL
  47. LOGIN_REDIRECT_URL
  48. LOGIN_URL
  49. LOGOUT_REDIRECT_URL
  50. PASSWORD_RESET_TIMEOUT_DAYS
  51. PASSWORD_HASHERS
  52. MESSAGE_LEVEL
  53. MESSAGE_STORAGE
  54. SESSION_COOKIE_AGE
  55. SESSION_COOKIE_NAME
  56. SESSION_ENGINE
  57. SESSION_EXPIRE_AT_BROWSER_CLOSE
  58. SITE_ID
  59. STATIC_ROOT
  60. STATIC_URL
  61. STATICFILES_DIRS

1. ADMINS

預設值:[](空列表)

所有獲得程式碼錯誤通知的人的郵件地址列表。當DEBUG=False,並且一個檢視引發了異常時,Django將會給這個列表裡的人發一封含有完整異常資訊的電子郵件。列表中的每個專案都應該是(全名,電子郵件地址)的元組。例如:

[('John', '[email protected]'), ('Mary', '[email protected]')]

2. ALLOWED_HOSTS

預設值:[](空列表)

這是新手比較困惑的一個配置項。該配置項列表中包含的是Django站點可以為之提供服務的主機/域名。 也就是哪些主機或IP能夠訪問Django伺服器!列表裡的所有元素是共同存在的關係,不純在衝突、優先順序和排斥的關係。

列表中的值可以是localhostwww.example.com或者.example.com形式的域名。

也可以是IP地址,比如:137.2.4.1192.168.1.10.0.0.0127.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_adminsdjango.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_TLSEMAIL_USE_SSL是互斥的,因此只能將其中一個設定設定為True。

23. EMAIL_SSL_CERTFILE

預設值:None

如果EMAIL_USE_SSLEMAIL_USE_TLS為True,則可以選擇指定要用於SSL連線的PEM格式的證書鏈檔案的路徑。

24. EMAIL_SSL_KEYFILE

預設值:None

如果EMAIL_USE_SSLEMAIL_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_ROOTSTATIC_ROOT必須設定為不同的值。

34. MEDIA_URL

預設值:''(空字串)

MEDIA_URL指向MEDIA_ROOT所指定的media檔案,用來管理儲存的檔案。該URL設定為非空值時,必須以斜槓“/”結束。

若你打算在模版中使用{{ MEDIA_URL }},必須在TEMPLATES的context_processors設定中新增django.template.context_processors.media

警告:MEDIA_URLSTATIC_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'

預設:1209600(2個星期)

會話Cookie的過期時間,以秒為單位。

預設值:'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_ROOTMEDIA_URLSTATIC_ROOTSTATIC_URLSTATICFILES_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/'