我已将信号接收器代码放入各自的模型文件中。
然而,信号接收器不断增长,我想将它们分为多个文件。
我还没有看到关于把信号接收器代码放在哪里的讨论。
(这让我怀疑我可能不应该制造很多信号接收器?)
请参阅文档:
https://docs.djangoproject.com/en/1.8/topics/signals/#connecting-接收器功能
通常将它们放在一个单独的signals.py
文件中,可能是项目中每个模块一个,但您需要确保导入这些文件,以便注册信号接收器。
正如上面文档中详细介绍的那样,Django 1.7+现在已经为这种情况提供了AppConfig.ready
机制
这里有一个很好的解释:
http://chriskief.com/2014/02/28/django-1-7-signals-appconfig/
(作为你可能做的一个例子)
基本上:
# myapp/__init__.py
default_app_config = 'myapp.apps.MyAppConfig'
和
# 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