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



我已将信号接收器代码放入各自的模型文件中。

然而,信号接收器不断增长,我想将它们分为多个文件。

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

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

请参阅文档:
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

最新更新