Django AppConfig ready() 未执行

Meta ·
更新时间:2024-09-21
· 634 次阅读

为什么ready()函数没有被执行呢?

例如有如下代码apps.py,这个app的名字是main。该文件位于./main/apps.py

from django.apps import AppConfig class MainConfig(AppConfig): name = 'main' def ready(self): print('我被执行了!')

首先,确保settings.pyINSTALLED_APPS包括了这个叫main的app:

INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'main', ]

其次,在./main/__init__.py中添加配置,让Django知道你的AppConfig文件在哪:

default_app_config = 'main.apps.MainConfig'

其中MainConfig跟第一段代码中的class MainConfig(AppConfig)是同一个东西。

现在,运行Django你就会发现ready()被执行啦~!当然直接用python manage.py runserver的话会运行两次,这在开发环境下是没关系的(如果你介意,可以使用命令python manage.py runserver --noreload),在生产环境中一般都用uWSGI,每个进程只会执行一次ready()函数。如果要注册signals,或者连接非关系型数据库(NoSQL),可以在ready()函数里面完成。


作者:Hull_Qin



read ng ready GO nf

需要 登录 后方可回复, 如果你还没有账号请 注册新账号