重写AppConfig.ready()

在AppConfig类的代码中,我们可以看到:

def ready(self):

"""

Override this method in subclasses to run code when Django starts.

"""

好吧,这是我的例子:

my_app / apps.py

class MyAppConfig(AppConfig):

name = 'my_app'

def ready(self):

print('My app')

我只想使现成的方法起作用。也就是说,当Django找到my_app时,让它运行ready方法。

该应用已在INSTALLED_APPS中注册。

我执行’python manage.py runserver’。并没有打印任何内容。

如果我在ready方法中放置一个断点,则调试器不会在那里停下来。

你能帮我吗:我在这里理解的错误是什么?先感谢你。

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'my_app',

]

我创建了一个视图

my_app / views.py

def index(request):

print('Print index')

urls.py

urlpatterns = [

url(r'^admin/', admin.site.urls),

url(r'^$', my_app_views.index, name='home')

]

好吧,视图正在工作。这意味着该应用程序已注册。

回答:

你需要执行以下两项操作之一。要么明确地说出AppConfig你想要的INSTALLED_APPS

INSTALLED_APPS = [

'my_app.apps.MyAppConfig'

]

或者,default_app_config__init__.py你的应用程序中定义:

# my_app/__init__.py

default_app_config = 'my_app.apps.MyAppConfig'

(并保持INSTALLED_APPS原样)。

由于目前是Django,找不到AppConfig适用于该应用程序的任何内容,只是假设其中没有一个。因此,你的视图等将起作用,但该ready()方法将永远不会被调用。

以上是 重写AppConfig.ready() 的全部内容, 来源链接: utcz.com/qa/424909.html

回到顶部