需求: 希望在運行項目前進行一些數據初始化,包括但不限於一些全局變量、數據庫等。
實現方法:很簡單,只需要三步
(1)確保app被注冊到settings文件中的install_apps中:
(2)在該app的__init__文件中設定default_app_config:
default_app_config = 'apps.home.apps.HomeConfig'
(3)在該app的apps文件中,繼承AppConfig類;重寫name屬性,重寫ready方法;其中name屬性必須與注冊的app名一致;ready方法中寫入你的初始化行為邏輯代碼即可。
from django.apps import AppConfig
class HomeConfig(AppConfig):
name = "apps.Home"
def ready(self):
pass
(4) 執行python manage.py runserver 即可看到ready方法被調用;
注意的點:有些同學可能會發現ready方法被調用了兩次,這是因為你使用了python manage.py runserver該運行方式啟動項目,這種方式會啟動兩個進程,其中一個進程用於監聽用戶修改代碼後重新啟動,但在真實環境中使用uwsgi啟動項目則只會調用一次ready方法。如果你不願意啟動兩個進程,也可以使用 python manage.py runserver --noreload 啟動項目 --noreload關閉監聽代碼修改重啟程序的意思。