在哪里放置django信号接收器代码,将它们分散到多个文件中?

在哪里放置django信号接收器代码,将它们分散到多个文件中?,django,signals,Django,Signals,我已将信号接收器代码放入相应的模型文件中 然而,信号接收器在不断增长,我想通过多个文件将它们分开 我还没有看到关于在哪里放置信号接收器代码的讨论 (让我怀疑我可能不应该制造很多信号接收器?参见文档: 通常将它们放在一个单独的signals.py文件中,可能项目中的每个模块都有一个,但您需要确保导入这些文件,以便注册信号接收器 如上面的文档所述,Django 1.7+现在有了针对这种情况的AppConfig.ready机制 这里有一个很好的解释: (作为您可能会做什么的示例) 基本上: # m

我已将信号接收器代码放入相应的模型文件中

然而,信号接收器在不断增长,我想通过多个文件将它们分开

我还没有看到关于在哪里放置信号接收器代码的讨论

(让我怀疑我可能不应该制造很多信号接收器?

参见文档:

通常将它们放在一个单独的
signals.py
文件中,可能项目中的每个模块都有一个,但您需要确保导入这些文件,以便注册信号接收器

如上面的文档所述,Django 1.7+现在有了针对这种情况的
AppConfig.ready
机制

这里有一个很好的解释:

(作为您可能会做什么的示例)

基本上:

# myapp/__init__.py
default_app_config = 'myapp.apps.MyAppConfig'


哦,我的意思是,信号接收器,而不是信号本身。答案是一样的,通常把信号接收器放在
signals.py
?或者
AppConfig.ready
部分既适用于信号接收器也适用于信号?应该注意,从1.8开始,Django文档说“新应用程序应该避免默认的app\u配置。相反,它们应该要求在已安装的app中显式配置相应AppConfig子类的虚线路径。”,创建新应用程序时,只需将
myapp.apps.MyAppConfig
直接放入
INSTALLED\u apps
中,而不用使用
default\u app\u config
# myapp/apps.py
from django.apps import AppConfig

class MyAppConfig(AppConfig):

    name = 'myapp'
    verbose_name = 'My App'

    def ready(self):

        # import signal handlers
        import myapp.signals.handlers