在Django中创建用户时执行某些操作

时间:2017-03-17 06:17:22

标签: python django facebook python-social-auth receiver

我正在使用social-auth-app-django与Facebook和Google进行社交认证。我正在尝试创建一个用户创建一个接收器来执行某些命令,例如在用户创建后显示一个教程(仅一次)。

以下是我正在尝试但未能使其工作的内容。

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))

基本上,一旦我创建了一个唯一的用户,我怎样才能创建某种接收器来激活,以便我可以在创建用户后执行自定义操作?我目前的代码似乎不起作用。

1 个答案:

答案 0 :(得分:0)

在你的app models.py中写一个预保存信号,如下所示:

@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()