Django启动时会自动加载settings配置文件中的installed_apps,然后执行如下源码函数按照顺序依次加载apps对应的admin.py文件:
#此方法在admin 的__init__.py中
def autodiscover():
autodiscover_modules('admin', register_to=site)
在这个方法里,既然autodiscover_modules能执行admin.py文件,那当然也可以执行别的py文件.
如果想让autodiscover_modules执行自定义的py文件,该怎么做呢?
在app01的apps.py文件的App01Config类中,定义ready方法
然后导入autodiscover_modules模块,让autodiscover_modules来执行自定义的py文件
from django.apps import AppConfig
from django.utils.module_loading import autodiscover_modules
class App01Config(AppConfig):
name = 'app01'
def ready(self):
autodiscover_modules("aaaa")
这样,程序在启动的时候就会在项目所有的目录下查找并调用autodiscover_modules方法来执行aaaa.py文件
在app01目录下创建aaaa.py文件,在aaaa.py文件中打印"hello world!"
可以看到在项目启动之前就会在后台打印"hello world!"了.