如何使用Python社交认证获取用户数据?
我创建了一个小项目,用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
对象已经包含了所有内容。