0

我创建了一个使用 python social auth 登录 facebook 的小项目。我在链接中引用了 python social auth 示例。我可以获取用户名request.name。但是我怎样才能获得其他数据,如,,first_name。任何帮助都会被赏识last_nameemail

视图中的示例代码是:

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

1 回答 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
    })

现在, 当用户通过身份验证时才会出现额外的属性。假设您使用的auth是 django 模型。如果不是,请相应地更改模型字段名称。

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

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

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

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

于 2014-10-20T18:38:12.527 回答