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
でユーザー名を取得しますが、テンプレートでは、その情報をビューから取得する必要があります。
ありがとう。 =)
リクエストオブジェクトを使用して、ログインしているユーザーを見つけることができます
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
request.user.get_username()
またはrequest.user.username
、前者が優先されます。
Userモデルは交換できるため、ユーザー名属性を直接参照する代わりにこのメソッドを使用する必要があります。
追伸テンプレートには、{{ user.get_username }}
を使用します
'request.user'にはログインしているユーザーがいます。
'request.user.username'は、ログインしているユーザーのユーザー名を返します。
関数ベースビューの方法でビューを作成する古い方法を使用している場合...
あなたのビューでは、おそらく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>
クラスベースのビューには、self.request.user.idを使用します
request.user.get_username()
は、ユーザーのメールの文字列を返します。
request.user.username
はメソッドを返します。