2014-01-09 48 views
1

我应该如何将信号连接到操作以便在Django-Paypal中处理不同类型的事务?Django-PayPal将信号连接到操作

文档链接:https://github.com/spookylukey/django-paypal

README.rst的项目#5 Django-PayPal它说,:

5.每当IPN被处理的信号将与该事务的结果被发送。在收到成功的付​​款后,将信号连接到执行所需操作的操作。

然后它列出了不同类型的交易:

有基本的交易信号:

payment_was_successful 
payment_was_flagged 
payment_was_refunded 
payment_was_reversed 

所以我的问题是,我怎么有图有信号Django-PayPal模块中的自定义Signals,以及这些Signals应该在哪里生活?在models.py或单独的文件?

如果你知道答案,你能给我一个工作的例子吗?

回答

0

您需要将信号放入由Django自动导入的文件中。

是很常见的把他们models.py为符合该法案,但我认为这是清洁剂把它们放在一个单独的文件或文件,例如:

myapp/ 
    __init__.py 
    models.py 
    signals.py 

然后在myapp/__init__.py你可以有:

from myapp.signals import * 

只要myapp在你INSTALLED_APPS的信号将被导入,并通过Django的连接。

signals.py定义你的接收器按the docs

from django.dispatch import receiver 
from paypal.standard.ipn.signals import payment_was_successful 

@receiver(payment_was_successful) 
def show_me_the_money(sender, **kwargs): 
    ipn_obj = sender 
    # Undertake some action depending upon `ipn_obj`. 
    if ipn_obj.custom == "Upgrade all users!": 
     Users.objects.update(paid=True)