在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:
AppConfig
INSTALLED_APPS
INSTALLED_APPS = [ 'my_app.apps.MyAppConfig' ]
或者,default_app_config在__init__.py你的应用程序中定义:
default_app_config
__init__.py
# my_app/__init__.py default_app_config = 'my_app.apps.MyAppConfig'
(并保持INSTALLED_APPS原样)。
由于目前是Django,找不到AppConfig适用于该应用程序的任何内容,只是假设其中没有一个。因此,你的视图等将起作用,但该ready()方法将永远不会被调用。
ready()