我想为我的许多应用和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):
...
...
答案 0 :(得分:1)
原则上,你可以这样做。
您希望在启动期间注册信号。一种方法是确保在启动期间导入views
,例如从urls.py
开始。
但是,我会建议使用推荐的方式并在您的应用启动代码中注册它们(请参阅https://docs.djangoproject.com/en/1.11/ref/applications/#django.apps.AppConfig.ready)
由于您的MyModelSaveSignal
是一个方法(而不是一个类),您应该选择一个小写名称。