Django项目启动执行(预加载 - 跨文件全局变量)

83 阅读1分钟

Django项目启动执行(预加载 - 跨文件全局变量)

需求:在运行项目前进行一些数据初始化
实现步骤:

1、创建app
2、在settings文件中注册app

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 创建的 app
    'create_app',
]

3、在该app的__init__文件中设置default_app_config

default_app_config = 'create_app.apps.CreateApp'

4、在该app的apps文件中,继承AppConfig类、重写name属性和ready方法
其中,ame属性必须与注册的app名一致,ready方法中写入你的初始化行为逻辑代码

from django.apps import AppConfig
class CreateApp(AppConfig):
    name = "create_app"
    def ready(self):
        # your code here
        print("create_app is ready!")

5、执行python manage.py runserver ,可看到ready方法被调用
注意点:

若发现ready方法被调用了两次,大概是因为使用 python manage.py runserver 的方式启动项目,这样会启动两个进程,其中,一个进程会监听用户修改代码后重新启动。使用 python manage.py runserver --noreload 的方式启动项目,–noreload 会关闭监听代码修改重启。
2.若想调用AppConfig中的初始化数据,在需要调用的地方通过django的apps钩子可以获取 AppConfig 实例化对象,通过调用对象获取需要的数据。

from django.apps import apps
my_config = apps.get_app_config('create_app')  # 此处填写需要获取的app名

原文链接:blog.csdn.net/Natalie_Lv/…