【发布时间】:2018-11-12 10:38:39
【问题描述】:
如果下订单,我想向管理员发送电子邮件(目前只有下订单的用户会收到电子邮件)。 order_pacedOscar Signal 可以在这里为我工作。
为此,我已经分叉了order 应用程序,并在此应用程序内部order_placed 函数在signals.py 中创建。我还在config.py 中导入了信号,但是当我从网站下订单时,这个order_placed 仍然没有被解雇。
谁能分享任何奥斯卡信号使用的例子?
代码:
config.py
from oscar.apps.order import config
class OrderConfig(config.OrderConfig):
name = 'catalogue.order'
def ready(self):
from oscar.apps.order import signals
signals.py
from django.db.models.signals import post_save
from django.dispatch import receiver
from oscar.apps.order.models import Order
@receiver(post_save, sender=Order)
def order_placed(*args, **kwargs):
"""
:param args:
:param kwargs:
:return:
"""
print("i ma here ----------------------")
【问题讨论】:
-
请显示您的信号处理程序的相关代码以及您如何/在何处将其连接到信号。
-
@schwobaseggl 我已经编辑了我的问题
-
您必须在应用配置的
ready中导入自定义signals模块,而不是来自oscar 的模块,以便在应用加载时连接自定义接收器。 -
@schwobaseggl 哎呀我的错。非常感谢 。您可以将此作为答案发布,以便我接受。
-
另外,我想指出,在这种情况下,不需要分叉
order应用程序(除非您要更改信号的发送方式)。您可以在现有代码库的其他地方简单地importsignal并将其用作接收器。
标签: python django django-signals django-oscar