Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python social auth..获取用户数据。。?_Python_Django_Python Social Auth - Fatal编程技术网

如何使用python social auth..获取用户数据。。?

如何使用python social auth..获取用户数据。。?,python,django,python-social-auth,Python,Django,Python Social Auth,我已经创建了一个使用python social auth登录facebook的小项目。我在上引用了python social auth示例。我可以通过请求.name获取用户名。但是如何获取其他数据,如名字,姓氏,电子邮件。任何帮助都将不胜感激 视图中的示例代码是: def home(request): context = RequestContext(request, {'request': request,

我已经创建了一个使用python social auth登录facebook的小项目。我在上引用了python social auth示例。我可以通过
请求.name
获取用户名。但是如何获取其他数据,如
名字
姓氏
电子邮件
。任何帮助都将不胜感激

视图中的示例代码是:

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

这里有一种方法:
请求。用户
有一个名为
的助手方法是经过身份验证的
,您可以这样使用它:

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 %}

无需在上下文中显式发送任何内容。
请求
对象已经拥有了所有内容

谢谢,如果用户经过身份验证,我们将获得哪些值…?您必须在
设置.py
中添加
社交身份验证FACEBOOK\u SCOPE=['email']
,以便从FACEBOOK获取电子邮件。如果您的意思是未经身份验证,这个上下文实际上没有任何意义,因为它会有
user
。仔细想想,您可以从模板本身获得所有这些值。让我编辑一下答案