![見出し画像](https://assets.st-note.com/production/uploads/images/78693542/rectangle_large_type_2_82a0cb15debb8433eec2c2310e4855a5.jpeg?width=800)
Django_ログインしているユーザー名をTemplateで表示 #175日目
こちらの技術書に沿ってサンプルアプリを作っています。
細かいコードは記載しませんが、この中に出てきたコードで学びになったものをアウトプットしたいと思います。
本日はテンプレートファイル上で気になるポイントがあったので調べてみました。ログイン後、ユーザー名を表示させているのですが、肝心のユーザー名の変数({{ user.get_username }})がどこから来ているか分からなかったのです。
以下のようにナビバーに表示しています。
[index.html]
<b-nav-item-dropdown right>
<template slot="button-content">{{ user.get_username }}</template>
<b-dropdown-item href="{% url 'rest_framework:logout' %}">
ログアウト
</b-dropdown-item>
</b-nav-item-dropdown>
↓右上のadminがそうです。
![](https://assets.st-note.com/img/1652707119423-HtjmBx5tAL.png?width=800)
まず、テンプレートで扱える変数に関して前提を整理します。変数はコンテキスト変数(context)と呼ばれ、【 {<変数名1>: <変数1>, <変数名2>: <変数2>,…..} 】という形式で格納されています。
そしてこのcontextは以下2種類の変数を含んでいます。
1. views.pyでrender関数などを用いて渡された変数
2. settings.py内のTEMPLATESのOPTIONに指定されている
'context_processers'で指定されるファイル内で定義された変数
userは2.の説明にあたる変数であり、他にviews.pyで指定しなくても使える主な変数としてrequest, perm, messageなどがある。
説明にある箇所を見てみます。context_processorsの中にある、「auth」というのがuserの所在です。
[settings.py]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')], # テンプレートファイルの検索ディレクトリに「<ベースディレクトリ>/templates」を指定
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth', # ここにuserが定義されている
'django.contrib.messages.context_processors.messages',
],
},
},
]
また一つDjangoのことが知れました。
ここまでお読みいただきありがとうございました!
参考
この記事が気に入ったらサポートをしてみませんか?