Django 1.8:Signal上未调用函数



我发现了一个代码,它应该在每次用户登录时发送信号。但这并没有发生。当用户登录时,不会调用函数get_create_stripe()。有人能说出问题所在吗?我在Django 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)

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

类似的东西

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_loged_in(get_create_st熟)

信号不是这样工作的。要么你做我上面写的,要么这样做:

user_logged_in.connect(get_create_stripe)

最新更新