web-dev-qa-db-ja.com

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でユーザー名を取得しますが、テンプレートでは、その情報をビューから取得する必要があります。

ありがとう。 =)

48
Cris Towi

リクエストオブジェクトを使用して、ログインしているユーザーを見つけることができます

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

https://docs.djangoproject.com/en/2.0/releases/1.10/ による

バージョンDjango 2.0では、構文が次のように変更されました

request.user.is_authenticated
71
karthikr

request.user.get_username()またはrequest.user.username、前者が優先されます。

Django docs say:

Userモデルは交換できるため、ユーザー名属性を直接参照する代わりにこのメソッドを使用する必要があります。

追伸テンプレートには、{{ user.get_username }}を使用します

31
user

'request.user'にはログインしているユーザーがいます。
'request.user.username'は、ログインしているユーザーのユーザー名を返します。

7
ancho

関数ベースビューの方法でビューを作成する古い方法を使用している場合...

あなたのビューでは、おそらくusuarioという新しい変数を作成してrequest.userを保存します...

ただし、Template a context_instanceに戻り、リクエストのコンテキストの値を渡すと、requestにアクセスするだけで、ログに記録されたユーザーを取得できます。

// In your views file
from Django.shortcuts import render_to_response
from Django.template import RequestContext
def your_view(request):
    data = {
        'formulario': Formulario()
        # ...
    }
    return render_to_response('your_template.html',
        data, context_instance=RequestContext(request))


// In your template
<form id='formulario' method='POST' action=''>
    <h2>Publica tu tuit, {{ request.user.username.title }} </h2>
    {% csrf_token %}
    {{ formulario.as_p }}
    <p><input type='submit' value='Confirmar' /></p>
</form>
3
Luan Fonseca

クラスベースのビューには、self.request.user.idを使用します

1
sakabio

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

request.user.usernameはメソッドを返します。

1
Dan Walters