我已将信号接收器代码放在相应的模型文件中。
然而,信号接收器不断增长,我想将它们分成多个文件。
我还没有看到有关放置信号接收器代码的位置的讨论。
(让我怀疑我不应该制作很多信号接收器吗?)
答案 0 :(得分:9)
参见文档:
https://docs.djangoproject.com/en/1.8/topics/signals/#connecting-receiver-functions
将它们放在单独的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