我使用Django 1.10.5Django apps.py應該如何使用?
看來,在APP1的apps.py文件將不會導入,除非明確地我在__init__該模塊設置default_app_config = 'app1.apps.App1Config'
。
然而,in the docs我在閱讀「新的應用程序應該避免default_app_config,而應該要求在INSTALLED_APPS中明確配置合適的AppConfig子類的虛線路徑。」
我讀的是爲包括像
INSTALLED_APPS = (
'...',
'app1',
)
在INSTALLED_APPS模塊與我確實有。
也許我是由語言「虛線路徑適當AppConfig的子類」迷茫,也許有比上市的主要模塊的更多呢?
我的具體使用方法是,我想要導入handlers.py所以它會被包含在應用程序,因爲它需要在聽一些信號接收器。爲了做到這一點,我遵循了建議in the docs,其中說:「實際上,信號處理程序通常是在它們相關的應用程序的信號子模塊中定義的。信號接收器連接在應用程序配置類的ready()方法中。如果您使用receiver()裝飾器,只需將ready()中的信號子模塊導入。「
# apps.py
from django.apps import AppConfig
class App1Config(AppConfig):
name = 'app1'
def ready(self):
import app1.handlers
# handlers.py
from django.dispatch import receiver
from django.db.models.signals import post_save
from app1.models import App1
@receiver(post_save, sender=App1)
def say_you_did_something(sender, instance, **kwargs):
print("Action has been taken.")
但是,絕對沒有......
直到我還添加避免
# __init__.py
default_app_config = 'individual.apps.IndividualConfig'
這應該只是< 1.7?
因此重申在實際應用中的問題,是什麼使項目意識到handlers.py文件的建議呢?
附加信息:通過簡單地添加額外的行來更改INSTALLED_APPS,我發現它應該替換引用該應用程序的行。即。 「app1.apps.App1Config」替換「app1」。同時導致錯誤「django.core.exceptions.ImproperlyConfigured:應用程序標籤不是唯一的,重複:app1」 – shanemgrey