""" 1. Django项目启动时,自定制执行某个py文件 Django启动时,且在读取项目中 路由加载 之前执行某个py文件 在任意app的apps.py中的Config类中定义ready方法,并调用autodiscover_modules from django.apps import AppConfig from django.utils.module_loading import autodiscover_modules class App01Config(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'app01' def ready(self): autodiscover_modules("xxx") Django在启动时,就会去已注册的所有app的目录下找xxx.py文件并自动导入(app01和app02均已注册) 如果执行两次,是因为Django内部自动重启导致,取消执行两次的方式: 方式一:python manage.py runserver 127.0.0.1:8001 --noreload 方式二:Edit Configurations中的Additional options添加--noreload 提示: 如果xxx.py执行的代码向'某个神奇的地方'放入了一些值,之后的路由加载时,可以去'某个神奇的地方'读取到原来设置的值 """
app01/apps.py
from django.apps import AppConfig from django.utils.module_loading import autodiscover_modules class App01Config(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'app01' def ready(self): autodiscover_modules("xxx")
app01/xxx.py
print("app01目录下的xxx.py")
app02/xxx.py
print("app02目录下的xxx.py")
启动项目后:
打印不会出现两次的配置:
项目目录: