我可以在一个空的应用程序中保存我的Django信号

时间:2017-08-23 11:37:19

标签: python django

我想为我的许多应用和django-contrib-comments实施信号。我无法创建应用,将其加载到settings.INSTALLED_APPS (django应用之后)的顶部,然后将所有信号放入views.py文件中?

# > ./manage.py startapp signals
# > vim myapp/settings.py
...
INSTALLED_APPS = {
    ...
    'signals',
    ...
}
...
# > vim signals/view.py
...
from django.db.models.signals import post_save
from django.dispatch import receiver
from djanfo_comments.odels import Comment
from myapp.mymodels import MyModel

@receiver(post_save, sender=Comment)
def commentSaveSignal(sender, **kwargs):
    ...
...

@receiver(post_save, sender=MyModel)
def myModelSaveSignal(sender, **kwargs):
    ...
...

1 个答案:

答案 0 :(得分:1)

原则上,你可以这样做。

您希望在启动期间注册信号。一种方法是确保在启动期间导入views,例如从urls.py开始。

但是,我会建议使用推荐的方式并在您的应用启动代码中注册它们(请参阅https://docs.djangoproject.com/en/1.11/ref/applications/#django.apps.AppConfig.ready

由于您的MyModelSaveSignal是一个方法(而不是一个类),您应该选择一个小写名称。