首次登录时创建教程

Posted

技术标签:

【中文标题】首次登录时创建教程【英文标题】:Creating Tutorial upon first login 【发布时间】:2017-03-18 19:56:52 【问题描述】:

我目前正在使用 python social auth 将用户登录到我的 Django 应用程序,并在创建第一个用户时显示教程。到目前为止我已经尝试过了,但是请求在 pre_save 信号中不起作用。还有另一种方法可以做到这一点吗?

@receiver(pre_save, sender=User)
def show_tutorial(sender, instance=None, **kwargs):
    # For first time creation of user display tutorial
    if instance._state.adding:
        print ('USER CREATED')
        request.session['first_login'] = True

编辑:我在视图中尝试了以下代码,但登录后,打印语句从未登录终端。

def after_user_created(request, user, **kwargs):
    user, created = User.objects.get_or_create(user=user)
    if created:
         request.session['first_login'] = True
         print('FIRST LOGIN')

【问题讨论】:

【参考方案1】:

你做不到。即使你能做到,你也不应该这样做。让我们在“视图”上尽可能地对“请求”进行操作。像这样。

def create_view(request):
    user, created = User.objects.get_or_create(id=xxx)
    if created:
         request.session['first_login'] = True

更新

添加一个假设使用“social-app-django”的解决方案。

①设置settings.SOCIAL_AUTH_NEW_USER_REDIRECT_URL

NEW_USER_REDIRECT_URL=/new/user/view

http://python-social-auth.readthedocs.io/en/latest/configuration/settings.html?highlight=NEW_USER_REDIRECT_URL#urls-options

② 用新的用户视图更新会话。

def new_user_view(request):
    request.session['first_login'] = True

【讨论】:

检查上面的编辑。我试过了,但由于某种原因,请求没有通过,因为打印语句从未出现在终端中。 @Viji123 这是您正在使用的库吗? github.com/python-social-auth/social-core @Viji123 更新我的答案。请重试。

以上是关于首次登录时创建教程的主要内容,如果未能解决你的问题,请参考以下文章