を事前に
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.admindocs',
'src',
)
おかげで、認証されたユーザのオブジェクトはテンプレートにuser
変数内に格納されています。
{% if user.is_authenticated %}
<p>Welcome, {{ user.get_username }}. Thanks for logging in.</p>
{% else %}
<p>Welcome, new user. Please log in.</p>
{% endif %}
:
、User
インスタンスまたはAnonymousUser
インスタンスのいずれかをテンプレートRequestContext
、現在ログインしているユーザをレンダリングする、テンプレート変数{{ user }}
に格納されている:上記の説明は次の例が含まれ
編集:この古い回答を掘り下げた@bufferのおかげで、最新の状態で更新しました。最初に書かれたとき、Django 1.4(2012年3月末にリリースされた)の1か月も経たないうちに、それは正しいものでした。しかし、Django 1.5以降、ユーザ名を取得する適切な方法は、ユーザモデルのインスタンスに対してget_username()
を呼び出すことです。これは、User
クラスをスワップする能力(およびユーザ名としてカスタムフィールドを持つ)のために追加されました。
私はテンプレートにユーザーオブジェクトを渡すことができますが、ログインしたユーザーは要求によってアクセスできるはずはありませんか?リクエストはテンプレートからはアクセスできないが、ビュー内にあるようだ。 – Emile
おもしろいです。これは正しい - {{request.user.username}}(以前のプロジェクトで使用した)の代わりに、{{user.username}}が動作します。助けてくれてありがとう@タデック! – Emile
'user.username'を' user.username'よりも使用することが望ましいです:https://docs.djangoproject.com/en/dev/ref/contrib/auth/#django.contrib.auth.models.User.get_username – Medorator