1

我有一个main_app, 和app2. main_app本质上是一个包含数据的项目列表,并app2包含有关所述项目的更多信息。

main_app不应该知道app2,但app2可以从 导入main_app

main_app/signals.py,我有

import django.dispatch
mysignal = django.dispatch.Signal(providing_args=['uid'])

main_app/views.py中,我有一个呈现各种视图的视图,其中main_templates包含项目的详细信息、一个用于编辑的视图和一个用于提交所述编辑数据的视图。这个想法是,当每个信号被调用并app2接收到这个信号时,就会发送一个信号。main_template使用“ with”调用来获取template2该应用程序的信息。

app2/processes.py我有以下内容:

import django.dispatch
from django.dispatch import receiver
import my models
from main_app.signals import mysignal, (mysignal2, etc)

然后对于每种方法,我都有

@receiver(mysignal)
def foo(sender, **kwargs) etc

好的......所以,main_app/views.py如果我有这条线:

from app2.processes import mysignal, mysignal2 etc

一切顺利。app2但我想消除对in 的任何依赖main_app。就我而言,app2只是从main_app/signals.py. 但是,如果我尝试摆脱上述行并将以下内容放入main_app/views.py

from main_app.processes import mysignal, my...

它不起作用......我没有收到错误,但来自 app2 的数据没有呈现到模板中,我真的不明白为什么......有什么想法吗?

4

1 回答 1

4

您在 app2 中的信号接收器可能未注册。简单检查:raise Exception("I was imported!");作为第一行放入app2/processes.py. 您可能永远不会看到该异常。您必须确保正在注册信号接收器。你可以通过import app2.processesDjango 会看到的地方来做到这一点。例如在app2/models.py.

于 2013-07-26T07:01:35.667 回答