首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django-PayPal将信号连接到操作

Django-PayPal将信号连接到操作
EN

Stack Overflow用户
提问于 2014-01-09 17:59:04
回答 1查看 570关注 0票数 1

为了处理Django-Paypal中的不同类型的事务,我应该如何将信号连接到操作?

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

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

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

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

基本事务有四种信号:

代码语言:javascript
复制
payment_was_successful
payment_was_flagged
payment_was_refunded
payment_was_reversed

因此,我的问题是,如何用自定义Signals映射Django-PayPal模块中的信号,以及这些Signals应该住在哪里?在models.py还是一个单独的文件中?

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

EN

回答 1

Stack Overflow用户

发布于 2014-01-09 21:12:22

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

在符合要求的情况下,将它们放入models.py中是很常见的,不过我认为将它们放在一个或多个单独的文件中比较干净,例如:

代码语言:javascript
复制
myapp/
  __init__.py
  models.py
  signals.py

那么在myapp/__init__.py中,您可以拥有:

代码语言:javascript
复制
from myapp.signals import *

只要myapp在您的INSTALLED_APPS中,您的信号就会被Django导入和连接。

signals.py中,您按照医生们定义接收者。

代码语言:javascript
复制
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)  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21027724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档