在哪里放置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