如何将信号连接到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
或单独的文件中?
如果你知道答案,你能给我一个实例吗?
答案 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)