【问题标题】:How to get user data with python social auth..?如何使用 python social auth 获取用户数据..?
【发布时间】:2014-10-20 18:32:28
【问题描述】:

我创建了一个使用 python social auth 登录 facebook 的小项目。我在 link 引用了 python social auth 示例。我可以使用 request.name 获取用户名。但是我怎样才能得到另一个像first_name,last_name,email这样的数据。任何帮助都会得到满足

视图中的示例代码是:

def home(request):
   context = RequestContext(request,
                       {'request': request,
                        'user': request.user})
   return render_to_response('home.html',
                         context_instance=context)

【问题讨论】:

    标签: python django python-social-auth


    【解决方案1】:

    这是一种方法:request.user 有一个名为 is_authenticated 的辅助方法,您可以像这样使用它:

    ctx = {
           'user' : request.user
          }
    
    if request.user.is_authenticated():
        ctx.update({
             'first_name': request.user.first_name,
             'last_name': request.user.last_name,
             'email' : request.user.email
        })
    

    现在,如果用户通过了身份验证,则存在额外的属性 也就是说,假设您使用的是 django 的 auth 模型。如果不是,请相应更改模型字段名称。

    附带说明,您不应该在上下文中传递整个请求对象。您应该只提取相关信息并将其发送到上下文中。

    现在,您无论如何都可以从模板中访问所有这些值。示例:

    {% if request.user.is_authenticated %}
        {{request.user.username}}
        {{request.user.email}}
        {# etc.. #}
    {% endif %}
    

    无需在上下文中明确发送任何内容。 request 对象已经拥有一切

    【讨论】:

    • 谢谢,如果用户通过身份验证,我们将获得哪些值列表...?
    • 您必须在settings.py 中添加SOCIAL_AUTH_FACEBOOK_SCOPE = ['email'] 才能获得来自Facebook 的电子邮件。
    • 如果你的意思是没有认证,这个上下文实际上没有任何意义,因为它会有user。再想一想,您可以从模板本身获取所有这些值。让我编辑答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    相关资源
    最近更新 更多