Django Social Auth检查用户是否是新视图

时间:2013-03-28 21:26:07

标签: django django-socialauth

我正在使用@Omab的django-social-auth作为我的网站。

在设置中,我将SOCIAL_AUTH_NEW_USER_REDIRECT_URL设置为/profile。我的问题是,在视图中,我如何检查用户是否是新用户?是否有可以访问的变量?

2 个答案:

答案 0 :(得分:2)

我假设SOCIAL_AUTH_LOGIN_REDIRECT_URLSOCIAL_AUTH_NEW_USER_REDIRECT_URL都指向/profile。并且您希望在被定向到使用/profile发送到那里的SOCIAL_AUTH_NEW_USER_REDIRECT_URL的用户之间进行区分。

最简单的方法是使用这样的新网址模式:

urls.py

urls = [
    (r'^profile/$', 'profile'),
    (r'^profile/new/$', 'profile', {'new_user': True}),
]

urlpatterns = patterns('project.app.views', *urls)

views.py

from django.shortcuts import render
def profile(request, new_user=False):
    if new:
         # if user is new code
    return render(request, 'path/to/template.html', {'new_user': new_user})

settings.py

SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/profile'
SOCIAL_AUTH_NEW_USER_REDIRECT_URL = '/profile/new'

在此处阅读:https://docs.djangoproject.com/en/1.5/topics/http/urls/#passing-extra-options-to-view-functions

:)

答案 1 :(得分:1)

找到了解决方案。

变量is_newrequest.session变量中设置。您可以按如下方式访问它:

name = setting('SOCIAL_AUTH_PARTIAL_PIPELINE_KEY', 'partial_pipeline')
if name in request.session:
    if request.session[name]['kwargs']['is_new'] == True:
        #Do something.

感谢您的回答!