2017-03-17 2 views
0

J'utilise social-auth-app-django pour effectuer une authentification sociale avec Facebook et Google. J'essaye de créer un récepteur une fois qu'un utilisateur a été créé pour exécuter certaines commandes telles que montrer un tutoriel (seulement une fois) après la création d'utilisateur.Effectuer certaines actions lors de la création de l'utilisateur dans Django

Voici ce que j'essaie de faire, mais je n'ai pas réussi à le faire fonctionner.

from social_core.pipeline.user import create_user 

@receiver(create_user) 
def after_user_created(request, user, **kwargs): 
    userprofile = UserProfile.objects.create(user=user) 
    userprofile.full_name = user.first_name + " " + user.last_name 
    userprofile.save() 
    request.session['first_login'] = True 
    return render_to_response("main/highlights/highlights.html",locals(),RequestContext(request)) 

Essentiellement, comment puis-je créer une sorte de récepteur pour activer une fois que je crée un utilisateur unique pour que je puisse effectuer des actions personnalisées une fois que l'utilisateur a été créé? Mon code actuel ne semble pas fonctionner.

Répondre

0

Dans votre application models.py écrire un pré signal d'économie comme indiqué ci-dessous:

@receiver(pre_save, sender=User) 
def show_tutorial(sender, instance=None, **kwargs): 
    # For first time creation of user display tutorial 
    if instance._state.adding: 
     # display tutorial() 
+0

J'ai essayé de faire ce que vous avez dit et de mettre un request.session [ « first_login »] = True, où vous mettez le # afficher tutorial() mais je reçois cette erreur: manquant 1 argument de position requis: 'request' – Viji123