Django 用者角色管理與路徑設計

更新日期: 2024 年 12 月 19 日

在使用者角色管理系統中,設計清晰、動態的路徑是提供優質使用者體驗的關鍵。

本文將帶您了解如何實現使用者主控台的動態加載、角色申請,以及角色切換功能。

無論您是初學者,還是剛接觸 Django 框架的開發者,都可以通過這篇文章掌握實現的基礎邏輯與設計方法。


使用者主控台:/users/

用途

  • 使用者的核心操作界面:使用者可以在此頁面查看與其角色相關的功能與資訊。
  • 動態顯示內容:系統會根據使用者角色(接案者或發包者)自動呈現對應內容,避免使用者需要記憶多個路徑。

實現細節

視圖邏輯

根據當前使用者角色加載不同的模板和數據:

  • 接案者角色:顯示技能列表、接案中的專案等。
  • 發包者角色:顯示發包中的專案、接案者詳情等。

以下是一個簡單的實現範例:

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

@login_required
def user_dashboard(request):
    user = request.user
    if user.is_freelancer:
        profile_data = {
            "role": "接案者",
            "name": user.username,
            "skills": user.skills.all(),
            "projects": user.freelance_projects.all(),
        }
        return render(request, 'users/freelancer_dashboard.html', profile_data)
    else:
        profile_data = {
            "role": "發包者",
            "name": user.username,
            "orders": user.orders.all(),
        }
        return render(request, 'users/client_dashboard.html', profile_data)

功能內容

  • 接案者主控台:專案進度、通知、技能管理。
  • 發包者主控台:專案管理、接案者詳情。

接案者申請頁面:/users/apply_freelancer/

用途

  • 幫助使用者填寫接案者角色所需的基本資料,如技能、工作經驗等。
  • 該頁面僅在首次切換至接案者角色時需要使用。

實現細節

視圖邏輯

顯示接案者表單,保存使用者資料,並自動切換角色:

@login_required
def apply_freelancer(request):
    profile = request.user.profile
    if request.POST:
        profile.is_freelancer = True
        profile.freelancer_verified = True
        profile.save()
        return redirect("users:user_dashboard")
    return render(request, "users/apply_freelancer.html")

功能內容

  • 填寫技能、經驗等接案者資訊。
  • 資料提交後,自動完成角色切換,無需手動重複操作。

角色切換邏輯:/users/switch_role_action/

用途

  • 提供後端邏輯支持,用於在接案者和發包者角色之間切換。
  • 自動判斷並執行相關操作,例如檢查接案者是否已完成必填資訊。

實現細節

視圖邏輯

根據當前角色執行切換操作,並重定向至主控台或申請頁面:

@login_required
def switch_role(request):
    profile = request.user.profile
    if profile.is_freelancer:
        profile.is_freelancer = False
        profile.save()
    else:
        profile.is_freelancer = True
        profile.save()
    return redirect("users:user_dashboard")

功能內容

  • 切換為發包者:直接將 is_freelancer 設為 False
  • 切換為接案者:如果未填寫完整資訊,則引導至 /users/apply_freelancer/

設計優勢總結

路徑清晰

  • 核心功能集中在 /users/ 路徑下,使用者無需記憶多個路徑。

動態呈現

  • 主控台根據角色自動加載內容,提升使用者體驗。

功能分離

  • 各路徑專注處理單一功能,代碼結構清晰,易於維護。

結語

本文介紹的路徑設計方案簡潔高效,既方便使用者操作,又便於開發者維護。

如果您正在設計多角色的使用者管理系統,這套方案將是一個實用的參考模型,幫助您快速實現動態角色管理的功能。

Similar Posts