本文首發于公眾號:Hunter后端
原文鏈接:Django筆記三十九之settings配置介紹
這一篇筆記介紹 Django 里 settings.py 里一些常用的配置項,這些配置有一些是在之前的筆記中有過介紹的,比如 logging 的日志配置,session 的會話配置等,這里就只做一下簡單的回顧,有一些是之前沒有介紹過的就著重介紹一下,
以下是本篇筆記目錄:
- 郵箱配置
- 允許訪問地址配置
- 資料庫配置
- 除錯模式配置
- 注冊應用程式配置
- 時區時間配置
- 會話配置
- 其他配置
1、郵箱配置
在前一篇筆記發送郵件的介紹中,有過詳細的介紹,比如 EMAIL_BACKEND,EMAIL_HOST 等,這里額外再介紹一個引數 ADMINS
,
這個引數其實在第三十篇筆記 log 日志記錄中有過介紹,當我們設定的日志發送郵件模塊有指定等級的日志發生時,會將郵件發送至 ADMINS 中定義的收件人串列,
這個引數是一個串列,每個元素也是一個元組或串列,第一個引數為收件人的名稱,第二個為收件人郵箱:
ADMINS = [
("Hunter", "[email protected]"),
]
2、允許訪問地址配置
我們的系統是可以設定允許訪問的地址的,可以設定域名或者 IP,比如:
ALLOWED_HOSTS = ["192.168.1.9"]
這個引數的默認值為空串列,則說明只允許該系統所在的服務器地址的其他服務可以訪問到 Django 服務,
如果想設定所有地址都可以訪問到我們的服務,可以如此設定:
ALLOWED_HOSTS = ["*"]
3、資料庫配置
前面連接資料庫的時候,沒有做過多的介紹,都是直接使用,這里再做一下詳細的介紹,以下是一個示例:
DATABASES = {
'default': {
'ENGINE': "django.db.backends.mysql",
"HOST": "192.168.1.31",
'NAME': "func_test",
"USER": "root",
"PASSWORD": "123456",
"PORT": 3306,
"OPTIONS": {},
"TEST": {},
},
}
在 DATABASES 中,必須設定一個 default 資料庫,也可以在里面添加其他資料庫連接,比如之前的多資料庫連接操作的筆記示例
其中,ENGINE 表示連接的資料庫型別,這里我們設定的是 MySQL,也可以設定成 postgresql,oracle,sqlite3,
這里我們連接使用的都是 MySQL,所以下面的配置項都是基于 MySQL 做的介紹,
HOST 表示連接資料庫的主機
NAME 表示要使用的資料庫名稱,比如我們這里 MySQL 的 func_test,如果使用的是 SQLite,那么這個地址應該是一個完整路徑,下面是一個使用 SQLite 作為資料庫的示例:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/Users/hunter/…/sqlite3.db'
}
}
USER 表示的是連接 MySQL 用到的用戶名
PASSWORD 則是密碼
PORT MySQL 一般是 3306,如果是映射的其他埠改成其他埠即可
CONN_MAX_AGE
還有一個引數為 CONN_MAX_AGE,表示一個資料庫連接的壽命,以秒為整數,默認為 0,表示每次資料庫請求結束之后即關閉資料庫連接,
如果設定為 60,那么資料庫連接在開啟之后 60s 即關閉此連接,在此期間,其他請求可以復用此連接,
如果設定為 None,則表示一直處于連接狀態,
OPTIONS
是用于添加連接資料庫時額外的引數,比如我們的 MySQL 的連接配置不直接在 DATABASES 中定義,而是通過組態檔的方式使用,如下官方檔案的一個使用示例:
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/path/to/my.cnf',
},
}
}
# my.cnf
[client]
database = NAME
user = USER
password = PASSWORD
default-character-set = utf8
這里的意思是,DATABASES 里的 default 資料庫連接使用的都是 my.cnf 里的配置選項
如果同時我們在 DATABASES["default"] 中也配置了 NAME,USER,PASSWORD 等引數,連接應該以哪個為準呢?
是以 OPTIONS 里的引數為準,這里默認的讀取配置順序是 OPTIONS > NAME, USER, PASSWORD, HOST, PORT
我們還可以在 OPTIONS 里設定資料庫的隔離等級:
* 'read uncommitted' 讀未提交
* 'read committed' 讀已提交
* 'repeatable read' 可重復讀
* 'serializable' 串行化
TEST
TEST 引數默認也是一個空 dict,之前在單元測驗那篇筆記中有過介紹,可以設定測驗資料庫的字符集編碼,指定測驗資料庫名稱等資訊,示例如下:
DATABASES = {
'default': {
...
"TEST": {
"CHARSET": "utf8",
"NAME": "test_default_db",
},
}
}
4、除錯模式配置
我們通過 settings 中的 DEBUG 引數來控制 Django 系統是否處于除錯模式,DEBUG=True
則表示系統處于除錯模式,
注意:永遠不要在 DEBUG=True 的情況下將網站部署到生產環境
除錯模式的主要功能之一就是顯示詳細的錯誤頁面,比如在 DEBUG=True 的情況下,如果我們的介面發生例外,Django會顯示一個詳細的回溯,比如下面的資訊:
而如果我們設定 DEBUG=False,顯示的資訊就會如下:
回傳給前臺的就是一個簡單的錯誤頁面,而不是像上面一樣暴露出詳細的檔案路徑和錯誤資訊
5、注冊應用程式配置
INSTALLED_APPS,串列引數,元素是在這個 Django 系統中被啟用的應用程式,
這個引數包含了 Django 系統初始化時候的一些配置類應用程式,比如 django.contrib.admin, django.contrib.sessions 等
也包含我們創建的 application,比如我們創建了一個名為 blog 的 application,就可以在其中添加 'blog.apps.BlogConfig' 才可以被系統檢測到
6、時區時間配置
時區的設定與 settings.py 里的兩個引數相關,一個是 TIME_ZONE,一個是 USE_TZ
TIME_ZONE 表示是時區,USE_TZ 表示是否默認是使用時區感知
我們獲取當前時間有兩個方式,一個是通過 datetime,一個是通過 django.utils.timezone 獲取:
import datetime
print(datetime.datetime.now())
from django.utils import timezone
print(timezone.now())
如果設定 USE_TZ = True
,不管 TIME_ZONE 設定的時區是哪個,timezone.now() 輸出的永遠是 UTC 時間,也就是格林威治時間,也就是比我們現在要早八個小時的時間
而 datetime.datetime.now() 則是會根據 TIME_ZONE設定的時區顯示時間,比如設定為 “Ameraica/Chicago” 則會比格林威治時間早六個小時,比我們當前時間早14個小時
但是我們存盤到資料庫的時間是使用 timezone 的時間的,所以這個設定不太對的,
如果想要存盤到資料庫的時間和我們本地的時間一致,我們需要設定 USE_TZ 為 False,且設定 TIME_ZONE 的值為我們當前時區東八區的時區,這樣,這兩個輸出的時間值就一致了,且資料庫中存盤的值也是與我們當前時間一致:
# settings.py
TIME_ZONE = "Asia/Shanghai"
USE_TZ = False
import datetime
from django.utils import timezone
print(datetime.datetime.now())
print(timezone.now())
# 2023-02-26 22:33:00.442966
# 2023-02-26 22:33:00.442982
7、會話配置
session 相關的配置在第三十二篇筆記的時候有過詳細介紹,這里只做一個索引介紹
SESSION_COOKIE_AGE
session 過期時間,以秒為單位
SESSION_COOKIE_NAME
用于會話的 cookie 的名稱,默認為 sessionid,可在 settings.py 中自定義修改
SESSION_ENGINE
控制 Django 存盤會話資料的地方,默認值為 'django.contrib.sessions.backends.db',也就是資料庫,django_session 這張表,
我們還在快取那篇筆記中有過介紹如何將 session 存盤到 Redis 快取中,這里不重復介紹了,
8、其他配置
還有一些配置,比如 日志配置 LOGGING,中間件配置 MIDDLEWARE 等,都在日志筆記,中間件筆記中都有過介紹,這里就不再贅述了,
這里介紹一下如何訪問 settings 中的配置,可以通過檔案路徑的形式訪問,也可以通過 django.conf 訪問:
from hunter import settings
print(settings.DATABASES)
from django.conf import settings
print(settings.DATABASES)
這里,hunter 為我們系統的名稱,所以在系統根目錄下,hunter/ 也是 settings.py 檔案的上層檔案夾,
如果想獲取更多后端相關文章,可掃碼關注閱讀:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/551991.html
標籤:其他
上一篇:【redis】哨兵監控原理
下一篇:返回列表