2013-06-03 99 views
29

如何在Django应用程序中获取登录用户的相关信息?如何在Django中获取登录用户的用户名?

例如:

我需要知道的用户名登录的用户说谁张贴了评论:

<form id='formulario' method='POST' action=''> 
    <h2>Publica tu tuit, {{ usuario.username.title }} </h2> 
    {% csrf_token %} 
    {{formulario.as_p}} 
    <p><input type='submit' value='Confirmar' /></p> 
</form> 

usuario.username.title我得到的用户名,但在模板中,我需要从视图中获取这些信息。

谢谢。 =)

+0

'usario'是用户对象还是userprofile? – karthikr

+0

是的,是配置文件,但我需要在视图中获取用户名以保存在模型中。 =) –

+0

好的。 。检查答案。这就是你如何从视图访问用户名 – karthikr

回答

47

可以使用请求对象,找到登录的用户

def my_view(request): 
    username = None 
    if request.user.is_authenticated(): 
     username = request.user.username 
3

如果你正在使用的书面方式欣赏老办法,在基于函数的视图的方式......

在你看来,你正在创建一个名为usuario节省大概request.user新的变量...

,但如果你返回Template一个context_instance,传递请求的上下文的价值,你会得到t他登录用户,只需访问request即可。

​​3210
+0

要使用这个,你必须在'settings.py'中安装'request template context processor'。 [看到这个](http://stackoverflow.com/questions/13713077/get-user-information-in-django-templates) – ray6080

7

'request.user' 具有登录的用户。
'request.user.username'将返回登录用户的用户名。

+0

这并没有提供一个问题的答案。要批评或要求作者澄清,在他们的帖子下留下评论 - 你总是可以评论你自己的帖子,一旦你有足够的[声誉](http://stackoverflow.com/help/whats-reputation),你会能够[评论任何帖子](http://stackoverflow.com/help/privileges/comment)。 – Sathish

+0

它将返回用户对象。你可以从这个对象中获得一些用户属性。 – ancho

27

request.user.get_username()request.user.username,前者是优选的。

Django docs say:

由于用户模型可以被交换出去 ,你应该使用,而不是直接引用的用户名 属性此方法。

P.S.对于模板,请使用{{ user.get_username }}

0

request.user.get_username()将返回用户邮件的字符串。

request.user.username将返回一个方法。

相关问题