如何使用Python社交认证获取用户数据?

0 投票
1 回答
2305 浏览
提问于 2025-04-28 15:01

我创建了一个小项目,用Python的社交认证功能来实现用Facebook登录。我参考了这个网站上的Python社交认证示例:链接。我可以通过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)
暂无标签

1 个回答

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 对象已经包含了所有内容。

撰写回答