2015-07-01 58 views
0

我正在選擇一個代碼,每次用戶登錄時都應該發送一個信號。雖然這不會發生。當用戶登錄時,函數get_create_stripe()不會被調用。 任何人都可以知道什麼是錯的? 我正在Django 1.8中工作,整個代碼是hereDjango 1.8:函數不會調用信號

要點代碼:此代碼是電子商務網站的一部分,用戶作爲其支付網關分條。意圖是,每次用戶登錄時,我們都會創建一個新的條帶ID或返回一個現有的條帶ID。

是否因爲此功能不在models.py中?這被寫入文件'signals.py',我不太確定Django應該如何理解從該文件中的信號調用調用get_create_stripe()。是這樣嗎?

import stripe 
from django.conf import settings 
from django.contrib.auth.signals import user_logged_in 
from .models import UserStripe 

stripe.api_key = settings.STRIPE_SECRET_KEY 


def get_create_stripe(sender, user, *args, **kwargs): 
    new_user_stripe, created = UserStripe.objects.get_or_create(user=user) 
    print "hello" 
    if created: 
     customer = stripe.Customer.create(
      email = str(user.email) 
     ) 
     print customer 
     new_user_stripe.stripe_id = customer.id 
     new_user_stripe.save() 

user_logged_in(get_create_stripe) 

回答

1

您需要將信號方法連接到信號。

喜歡的東西

from django.dispatch import receiver 
from django.contrib.auth.signals import user_logged_in 

@receiver(user_logged_in, sender=UserStripe) 
def get_create_stripe(sender, user, *args, **kwargs): 

編輯:另外,這是什麼: user_logged_in(get_create_stripe)

這不是信號是如何工作的。要麼你做我上面寫的,或者做到這一點:

user_logged_in.connect(get_create_stripe) 
+0

我做了後者,但它仍然沒有工作。我還能嘗試什麼? – user248884

+0

用戶如何登錄? –

+0

我通過admin中的超級用戶登錄和註銷。我只有一個用戶,這是管理員。 – user248884