试图抓住Django的基础知识。即应用程序如何工作。 文档:https://docs.djangoproject.com/en/stable/ref/applications/#methods
在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')
我只想让ready方法正常工作。也就是说,当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')
]
嗯,这个观点正在发挥作用。这意味着该应用程序已注册。
答案 0 :(得分:86)
你需要做两件事之一。在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()
方法永远不会被调用。