2013-06-03 1719 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將返回一個方法。

相關問題