重写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__.pydefault_app_config = 'my_app.apps.MyAppConfig'
(并保持INSTALLED_APPS原样)。
由于目前是Django,找不到AppConfig
适用于该应用程序的任何内容,只是假设其中没有一个。因此,你的视图等将起作用,但该ready()
方法将永远不会被调用。
以上是 重写AppConfig.ready() 的全部内容, 来源链接: utcz.com/qa/424909.html