2012-09-08 96 views
1

有没有办法在base.html文件中访问登录用户的名字?在base.html(django)中显示登录用户

我正在尝试这样做,因为我想显示当前在导航栏上登录的用户,但它不会访问用户的信息,也不会正确检查用户是否已通过身份验证。

HTML里面base.html文件

  Hi there, 

      {% if user.is_authenticated %} 

       {{user.first_name}} 
      {% else %} 
       Stranger 
      {% endif %} 

回答

3

request.user给你当前登录的用户对象。所以你完全访问所有的属性和用户类有方法。要获得first_name,您可以执行{{ request.user.first_name }}。要获取全名,请使用{{ request.user.get_full_name }}

+1

为了避免将不断地用这个词的要求,你可以得到你的视图内的用户实例,并明确时传递变量呈现您的模板。 – Nick

1

如果您使用[RequestContext][1],则默认情况下会在模板中获得user实例,因此您可以将其用作{{user.first_name}}等的属性。 user将与当前已通过身份验证的用户相同,该视图在request.user中也可用。

默认情况下,RequestContext会在您的settings.py中添加一些在TEMPLATE_CONTEXT_PROCESSORS中定义的默认模板上下文。

在你看来,你可以使用它作为

#your view code 
.... 
#send response by rendering the template and use Requestcontext while rendering template 
return render_to_response('polls/detail.html', {'poll': p}, 
          context_instance=RequestContext(request)) 

参考 - Django Tutorial 04