前言
當今年二月不斷的補班的時候 … 發現團隊內部有人使用 django-environ
套件。
筆者過去是使用 python-dotenv
。但是發現 django-environ
有提供更多針對 django
框架的框架設定 !
- 讀取和解析環境檔案 (.env) 中的變數
- 將環境變數轉換成適當的 Python 型別
- 提供一些方便的方法來取得常用的設定值,如
資料庫連接字串
、快取設定
、郵件設定
等 - 支援多種格式的環境變數,如 JSON、YAML、INI 等
針對 資料庫連接字串
、快取設定
就是一大優點
資料庫接字串
使用前的設定
筆者再使用 django-environ 前是使用 python-dotenv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| # 檔案 1 settings.py
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql", # 1- 設定 ENGINE
"NAME": variables.POSTGRESQL_NAME, # 2- 資料庫名稱
"USER": variables.POSTGRESQL_USER, # 3- 資料庫使用者
"PASSWORD": variables.POSTGRESQL_PASSWORD, # 4- 資料庫密碼
"HOST": variables.POSTGRESQL_HOST, # 5- 資料庫 IP
"PORT": variables.POSTGRESQL_PORT, # 6- 資料庫 PORT
}
}
# 檔案 2 variables.py 管理環境變數
POSTGRESQL_PASSWORD = os.getenv("DB_PASSWORD", "DEFAULT_PASSWORD") # 如果沒有 DB_PASSWORD, 就是 DEFAULT_PASSWORD
POSTGRESQL_HOST = os.getenv("DB_HOST", "localhost") # 如果沒有 DB_HOST, 就是 localhost
# 檔案 3 .env
DB_PASSWORD = postgres
POSTGRESQL_HOST = 192.168.1.1
|
通常我們使用 Django 去連接 DB 的時候可能都會需要這些設定。
使用後的設定
筆者再使用 django-environ 後就直接縮短這個部分的參數
1
2
3
4
5
6
7
8
9
10
11
12
13
| # 檔案 1 settings.py
DATABASES = {
'default': variables.DATABASE
}
# 檔案 2 variables.py
DATABASE = env.db() # default load .env DATABASE_URL
# 檔案 3 .env
DATABASE_URL="postgres://postgres:[email protected]:5432/mydb"
# 檔案 3 - 如果我要更換成 MYSQL
DATABASE_URL="mysql://root:[email protected]:3306/mydb"
|
甚至你也可以省去 variables.py 這個檔案,直接在 settings.py 裡面直接使用 env.db() 就好。
1
2
3
4
5
6
7
| # 檔案 1 settings.py
DATABASES = {
'default': env.db()
}
# 檔案 2 .env
DATABASE_URL="postgres://postgres:[email protected]:5432/mydb"
|
省去 variables.py 這樣的設定反而比較直覺。
感謝撥冗閱讀本篇文章。
Reference
- joke2k/django-environ: Django-environ allows you to utilize 12factor inspired environment variables to configure your Django application. - GitHub. https://github.com/joke2k/django-environ 已存取 2023/3/1.
- django-environ - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天. https://ithelp.ithome.com.tw/articles/10233649 已存取 2023/3/1.
- Welcome to django-environ documentation - Read the Docs. https://django-environ.readthedocs.io/ 已存取 2023/3/1.
- Django-environd的使用(管理配置文件敏感参数和环境变量)_想学废更多东西的猿的博客-CSDN博客_django environ. https://blog.csdn.net/zscccccc/article/details/121630824 已存取 2023/3/1.