1

私は django-paypal の dcramer のフォークを使用しており、現在までセットアップに成功しています。「paypal.pro.signals.payment_was_successful」を作成したリスナーに接続しようとしましたが、シグナルが複数回送信され、アプリケーションでエラーが発生しています。「dispatch_uid」を接続ステートメントに追加しようとしましたが、それでも複数回送信されます...何が間違っていますか? この信号を使用する必要がありますか?

4

2 に答える 2

2

解決策は、ハンドルをシグナルに接続するときに、dispatch_uid キーワード arg を追加することです。例については、 http://code.djangoproject.com/wiki/Signals#TipsandTroubleshootingを参照してください。

コードは次のようになります。

payment_was_successful.connect(paypal_payment_processed, dispatch_uid="something-rational-here")
于 2010-11-11T14:09:36.867 に答える
1

現時点では非常に簡単です。アプリの init.py にシグナルを登録しました

init.pyで

from paypal.pro.signals import payment_was_successful
from listeners import paypal_payment_processed

payment_was_successful.connect(paypal_payment_processed)

listeners.py で

def paypal_payment_processed(sender, **kwargs):
   print 'signal called'

次に、django-paypal ラッパーのビューには次のものが含まれます。

def apartment_store_lease_step_4_content(request, apartment_id, lease_obj):

item = {
    "amt": total,
    "custom": lease_obj.id ,
    "cancelurl" : "OMITTED",
    "returnurl" : "OMITTED"
}

ctx = {        
    "lease_purchase" : lease_obj,
    "contract" : contract
}
ctx.update(locals())


kw = {
    "item" : item,
    "payment_template" : "OMITTED",
    "confirm_template" : "OMITTED",
    "success_url" :  "OMITTED",
    "context": ctx
}

ppp = PayPalPro(**kw)
return ppp(request)
于 2010-09-27T03:28:59.490 に答える