Django 1.8:未在 Signal 上调用函数

Django 1.8: Function not called on Signal

我正在寻找一个代码,该代码应在用户每次登录时发送一个信号。不过这并没有发生。当用户登录时,函数 get_create_stripe() 不会被调用。 谁能告诉我出了什么问题? 我在 Django 1.8 中工作,整个代码是 here.

关于代码的要点:此代码是电子商务网站的一部分,用户将其作为支付网关。意图是,每次用户登录时,我们都会创建一个新的条带 ID 或 return 现有的条带 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)

您需要将信号方法连接到信号。

类似

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)