试图抓住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.
"""
Run Code Online (Sandbox Code Playgroud)
嗯,这是我的例子:
my_app应用/ apps.py
class MyAppConfig(AppConfig):
name = 'my_app'
def ready(self):
print('My app')
Run Code Online (Sandbox Code Playgroud)
我只想让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',
]
Run Code Online (Sandbox Code Playgroud)
我创建了一个视图
my_app应用/ views.py
def index(request):
print('Print index')
Run Code Online (Sandbox Code Playgroud)
urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', my_app_views.index, name='home')
]
Run Code Online (Sandbox Code Playgroud)
嗯,这个观点很有效.这意味着该应用程序已注册.
sol*_*oke 106
你需要做两件事之一.要么明确说出AppConfig你想要的INSTALLED_APPS:
INSTALLED_APPS = [
'my_app.apps.MyAppConfig'
]
Run Code Online (Sandbox Code Playgroud)
或者,default_app_config在__init__.py您的应用中定义一个:
# my_app/__init__.py
default_app_config = 'my_app.apps.MyAppConfig'
Run Code Online (Sandbox Code Playgroud)
(并保持INSTALLED_APPS原样).
因为它目前是Django找不到任何AppConfig应用程序,只是假设没有.所以你的观点等会起作用,但这种ready()方法永远不会被调用.
| 归档时间: |
|
| 查看次数: |
13135 次 |
| 最近记录: |