Django-PayPal将信号连接到操作

时间:2014-01-09 17:59:05

标签: python django paypal

如何将信号连接到Actions以便在Django-Paypal中处理不同类型的交易?

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

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

5。每当处理IPN时,将发送带有交易结果的信号。在收到成功付款后,将信号连接到操作以执行所需的操作。

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

基本交易有四个信号:

payment_was_successful
payment_was_flagged
payment_was_refunded
payment_was_reversed

所以我的问题是,如何使用Signals模块中的自定义Django-PayPal映射信号,这些Signals应该在哪里生效?在models.py或单独的文件中?

如果你知道答案,你能给我一个实例吗?

1 个答案:

答案 0 :(得分: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)