Djangoでユーザーごとにページの中で表示を変えたい。

2024年6月23日

 

ユーザーごとにページの中で表示を変えるためには、テンプレート内でユーザーの情報を取得し、それに基づいて条件分岐を行います。以下はその基本的な例です。

まず、views.py でログインしているユーザーの情報を取得し、それをテンプレートに渡します。

python
from django.shortcuts import render
from django.contrib.auth.decorators import login_required

@login_required
def user_profile(request):
    # ユーザー情報を取得
    user = request.user

    context = {
        'user': user,
    }

    return render(request, 'user_profile.html', context)

上記の例では、user_profile ビューがログインしているユーザーの情報を context にセットしています。

次に、user_profile.html テンプレート内でユーザー情報を元に表示を変更します。

html
<!DOCTYPE html>
<html>
<head>
    <title>User Profile</title>
</head>
<body>
    <h1>Welcome, {{ user.username }}!</h1>

    {% if user.is_staff %}
        <p>You are an admin.</p>
    {% else %}
        <p>You are a regular user.</p>
    {% endif %}

    <!-- 他のユーザーに依存したコンテンツを追加 -->
</body>
</html>

上記の例では、{{ user.username }} を使用してユーザーのユーザー名を表示し、{% if user.is_staff %} でユーザーがスタッフ権限を持っているかどうかを確認しています。これに基づいて異なるコンテンツが表示されます。

これで、user_profile ページにアクセスしたときに、ログインしているユーザーの情報に応じて表示が変わるようになります。必要に応じて他のユーザーに依存した条件分岐を追加してください。

未分類

Posted by ぼっち