2013-06-03 18 views
29

ログインしたユーザーに関する情報をDjangoアプリケーションで取得するにはどうすればよいですか?例えばDjangoでログインしているユーザのユーザ名を取得するにはどうすればよいですか?

私がレビューを投稿者言うためにログインしたユーザーのユーザー名を知っている必要があります:私は、ユーザー名を取得usuario.username.title

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

が、テンプレートでは、Iその情報をビューから取得する必要があります。

ありがとうございました。 =)

+0

「usario」はユーザーオブジェクトかuserprofileですか? – karthikr

+0

はい、プロフィールですが、モデルに保存するにはビューでユーザー名を取得する必要があります。 =) –

+0

ok。 。答えをチェックしてください。これはビューからユーザ名にアクセスする方法です – karthikr

答えて

47

あなたはファンクション・ベース・ビューの方法で、ビューを足すの古い方法を使用している場合は、ログインしているユーザー

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

を見つけるために、リクエストオブジェクトを使用することができます...

あなたのビューで

、あなたはおそらくからrequest.userを保存するためにusuarioと呼ばれる新しい変数を作成している...

いますが、要求のコンテキストの値を渡し、Templatecontext_instanceに戻った場合は、必要になります〜を得る彼はrequestにアクセスするだけで、ユーザーを記録しました。

​​3210
+0

これを使用するには、 'settings template context processor 'が' settings.py'にインストールされている必要があります。 [これを参照してください](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:

Userモデルが アウトを交換することができるので、あなたの代わりに、直接ユーザー名 属性を参照するこの方法を使用する必要があります。

P.S.テンプレートの場合、{{ user.get_username }}

0

request.user.get_username()は、ユーザーのメールの文字列を返します。

request.user.usernameが返されます。

関連する問題