Djangoでログインユーザーによって表示を変えたい

2024年6月23日

ログインしているユーザーによって表示を変えるためには、views.py で条件分岐を行い、それに基づいて適切なテンプレートをレンダリングすることが一般的です。以下はその基本的な例です。

まず、views.py でログインしているかどうかを判断し、それに基づいてテンプレートを選択します。

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

@login_required
def dashboard(request):
    # ログインしているユーザーに基づいて表示を変更
    if request.user.is_staff:
        template_name = 'dashboard_admin.html'
    else:
        template_name = 'dashboard_user.html'

    return render(request, template_name)

上記の例では、dashboard ビューが @login_required デコレーターでデコレートされており、ログインしていない場合はログインページにリダイレクトされます。ログインしている場合は、ユーザーがスタッフ権限を持っているかどうかを確認し、それに基づいて異なるダッシュボードテンプレートを選択しています。

次に、urls.py でこのビューを呼び出すパスを設定します。

python
from django.urls import path
from .views import dashboard

urlpatterns = [
    path('dashboard/', dashboard, name='dashboard'),
    # 他のURLパターンも追加できます
]

最後に、テンプレートフォルダに dashboard_admin.htmldashboard_user.html を作成します。これらのテンプレートファイル内で、それぞれのユーザーに対応する表示を実装します。

dashboard_admin.html:

html
<!DOCTYPE html>
<html>
<head>
    <title>Admin Dashboard</title>
</head>
<body>
    <h1>Welcome, Admin!</h1>
    <!-- 他のコンテンツを追加 -->
</body>
</html>

dashboard_user.html:

html
<!DOCTYPE html>
<html>
<head>
    <title>User Dashboard</title>
</head>
<body>
    <h1>Welcome, User!</h1>
    <!-- 他のコンテンツを追加 -->
</body>
</html>

これで、dashboard ページにアクセスしたときに、ユーザーの権限に応じて異なるダッシュボードが表示されるようになります。

未分類

Posted by ぼっち