在哪里放置 django 信号接收器代码,将它们分布在多个文件中?
where to put django signal receiver code, spread them over multiple files?
我已将我的信号接收器代码放入相应的模型文件中。
但是,信号接收器不断增加,我想将它们分成多个文件。
我还没有看到关于将信号接收器代码放在哪里的讨论。
(让我怀疑我不应该做很多信号接收器?)
查看文档:
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
我已将我的信号接收器代码放入相应的模型文件中。
但是,信号接收器不断增加,我想将它们分成多个文件。
我还没有看到关于将信号接收器代码放在哪里的讨论。
(让我怀疑我不应该做很多信号接收器?)
查看文档:
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