Django | Djangoでログインユーザ情報を取得/表示してみる

Django | Djangoでログインユーザ情報を取得/表示してみる

みなさん、こんにちは!

前回の続きとして、ログイン後のTOP画面にユーザ情報を表示するように設定します。

ユーザ情報はどこに格納されるのか?

ログイン後のユーザ情報は「request」オブジェクトに格納されます。

実際に取り出してみます。

login.htmlを以下のように編集します。

<!DOCTYPE html>
<html lang="ja">

<head>
<meta charset="UTF-8">
<title>ログイン成功</title>
</head>

<body>
    <p>こんにちは!{{request.user}}さん</p>
    <p>ログイン成功しました</p>
    <hr>
    <a href="{% url 'logout' %}"><p>ログアウト</p></a>
</body>

</html>

結果は以下の通りです。

今回は「admin」というユーザでログインしたため、以下のような表記になりました。

管理者かスタッフか一般ユーザか?

例えば管理者か否かを見分けることも可能です。

request.user.is_superuser が Trueの場合は「管理者」

request.user.is_staff がTrueの場合は「スタッフ」

いずれも当てはまらない場合は「一般ユーザ」

となります。

管理者画面

管理者画面のユーザ設定画面にて、パーミッションを変更することができます。

コード

判別するためのコードは以下の通りです。

<!DOCTYPE html>
<html lang="ja">

<head>
<meta charset="UTF-8">
<title>ログイン成功</title>
</head>

<body>
    <p>こんにちは!{{request.user}}さん</p>
    <p>あなたは
        {% if request.user.is_superuser %}
        管理者
        {% elif request.user.is_staff %}
        スタッフ
        {% else %}
        一般ユーザ
        {% endif %}
        です。
    </p>
    
    <p>ログイン成功しました</p>
    <hr>
    <a href="{% url 'logout' %}"><p>ログアウト</p></a>
</body>

</html>

動作検証

検証結果です。今回は

admin:スーパーユーザ、staff_user:スタッフ、ippan_user:一般 としています。

・スーパーユーザ「admin」の場合

・スタッフ「staff_user」の場合

・一般「ippan_user」の場合

以上のようにして、権限毎に画面制御を行うことができます。

今回は以上です。

ではまた!

本日のAmazonおすすめ_Top10

2024-04-27 07:56:19時点