2017-01-27 42 views
0

我使用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文件的建議呢?

回答

1

你誤解了指令。因爲它說,你需要在INSTALLED_APPS虛線路徑的AppConfig類本身,而不是應用程序。

INSTALLED_APPS = (
'...', 
'app1.apps.App1Config', 
) 
+1

附加信息:通過簡單地添加額外的行來更改INSTALLED_APPS,我發現它應該替換引用該應用程序的行。即。 「app1.apps.App1Config」替換「app1」。同時導致錯誤「django.core.exceptions.ImproperlyConfigured:應用程序標籤不是唯一的,重複:app1」 – shanemgrey

相關問題