註冊 Django 應用程式(APP)
在專案中會將大部分功能模組化,每個模組稱為應用程式(APP)。
1 | # api/products/apps.py |
settings 設定
在 settings.py
中註冊應用程式,Django 會自動尋找 apps.py
中的 ProductsConfig
類別,並用它來配置應用程式
1 | INSTALLED_APPS = [ |
並替換資料庫連線資訊
1 | # Database |
資料庫 migrate 流程
本專案使用的 MySQl 驅動為 pymysql
建立虛擬環境
本人習慣在各個不同專案目錄底下建立 venv
,方便管理,並且不會互相干擾,只需格外注意要再 .gitignore
中加入 venv
別讓虛擬環境被版控即可
1 | python -m venv venv |
資料庫遷移
進入後端目錄開始進行資料遷移同步 Django 專案下 models.py 中的類別(Class)至資料庫
1 | cd backend/ |
mysql_native_password 錯誤排除
若在遷移時遇到 "Authentication plugin 'mysql_native_password' cannot be loaded:
的錯誤訊息,是因為 MySQL 8+ 的身份驗證機制與 mysqlclient 兼容性問題,解決方法為在 backend/__init__.py
中加以下程式碼:
1 | # __init__.py |
原因:Django 預設使用 MySQLdb,而這兩行能切換為 pymysql。避免對 Django 進行額外的設定變更,同時繞過 mysqlclient 的兼容性問題,不依賴 mysql_native_password.so
加入這兩行後在執行一次 python manage.py migrate
即可完成資料庫遷移
MySQL
Django 會使用 app_label_modelname 的格式來命名資料表,例如:
先前我把我所有的應用程式名稱「不再」設定為 api,而是依據它們不同的功能命名,例如 product
、order
、user
、blog
等等,這樣資料表更容易管理,那我將所有與 product 相關的資料表都放在 products 應用程式中
因此能看到在 MySQL 中資料表名稱從原本的 api_product、api_productimage、api_specification..
變 products_product、products_productimage、products_specification
..等等。
若您覺得這篇文章對您有幫助,歡迎分享出去讓更多人看到⊂◉‿◉つ~
留言版