2014-01-09 49 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)