2015-07-01 4 views
0

Я набираю код, который должен посылать сигнал каждый раз, когда пользователь входит в систему. Однако этого не происходит. Функция get_create_stripe() не получает вызов, когда пользователь входит в систему. Кто-нибудь может сказать, что случилось? Я работаю в Django 1.8, и весь код here.Django 1.8: Функция не вызывается в сигнале

Gist о коде: Этот код является частью сайта электронной коммерции, который пользователи используют в качестве платежного шлюза. Intent - каждый раз, когда пользователь входит в систему, мы создаем новый идентификатор полосы или возвращаем существующий.

Это потому, что эта функция отсутствует в 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): 

EDIT: Кроме того, что это: USER_LOGGED_IN (get_create_stripe)

Это не то, как работают сигналы. Либо вы делаете то, что я написал выше, либо делаем это:

user_logged_in.connect(get_create_stripe) 
+0

Я сделал последнее, но все еще не работал. Что еще я мог попробовать? – user248884

+0

Как ваш пользователь вошел в систему? –

+0

Я вхожу и выхожу через суперпользователя в admin. У меня только один пользователь, который является администратором. – user248884

Смежные вопросы