为了处理Django-Paypal中的不同类型的事务,我应该如何将信号连接到操作?
文档链接: https://github.com/spookylukey/django-paypal
在README.rst for Django-PayPal的第5项中,它说:
5.每当处理IPN时,都会发送带有交易结果的信号。当收到成功的付款时,将信号连接到操作以执行所需的操作。
然后它列出了不同类型的交易:
基本事务有四种信号:
payment_was_successful
payment_was_flagged
payment_was_refunded
payment_was_reversed因此,我的问题是,如何用自定义Signals映射Django-PayPal模块中的信号,以及这些Signals应该住在哪里?在models.py还是一个单独的文件中?
如果你知道答案,你能给我举一个例子吗?
发布于 2014-01-09 21:12:22
您需要将信号放入Django自动导入的文件中。
在符合要求的情况下,将它们放入models.py中是很常见的,不过我认为将它们放在一个或多个单独的文件中比较干净,例如:
myapp/
__init__.py
models.py
signals.py那么在myapp/__init__.py中,您可以拥有:
from myapp.signals import *只要myapp在您的INSTALLED_APPS中,您的信号就会被Django导入和连接。
在signals.py中,您按照医生们定义接收者。
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) https://stackoverflow.com/questions/21027724
复制相似问题