Logo

新人日誌

首頁關於我部落格

新人日誌

Logo

網站會不定期發佈技術筆記、職場心得相關的內容,歡迎關注本站!

網站
首頁關於我部落格
部落格
分類系列文

© 新人日誌. All rights reserved. 2020-present.

使用 Django 創建用戶個人資訊更新表單

最後更新:2024年12月16日Python

本文為 Django 圖片上傳功能系列教學,第 11 篇:

  1. Django 實現用戶圖片上傳功能:10 步驟詳細解析
  2. Django 圖片上傳功能完整代碼解析
  3. Django 模型中的三種主要關聯方式
  4. Django 中的 ImageField:簡單介紹與進階設定
  5. Django 中的 blank=True 和 null=True:深度解析
  6. Django Signals 的基礎入門
  7. 深入解析 Django 的 @receiver 裝飾器:原理與實踐
  8. Django 圖片上傳功能:信號執行函數設計解析
  9. 如何在 Django 中載入和使用信號(Signals)
  10. Django 模型建立後的必備步驟:執行 migrate
  11. 使用 Django 創建用戶個人資訊更新表單 👈 所在位置
  12. 如何使用 Django 更新用戶個人資料
  13. 深入了解 HTML 表單的 enctype=”multipart/form-data”
  14. Django 中媒體檔案處理:設定與執行解析
  15. Django 專案中靜態與媒體檔案的正確配置指南
  16. Django 動態讀取頭像:模板與上下文的最佳實踐

在基於 Django 框架的應用中,為用戶提供更新個人資訊的功能是非常常見的需求。

本文將通過一組表單代碼,介紹如何實現用戶基本資料和附加資訊的更新功能,並解釋每部分的設計。


導入必要模組

from django import forms
from django.contrib.auth.models import User
from .models import Profile
  • forms:Django 提供的表單工具,能快速生成和處理表單。
  • User:Django 的內建用戶模型,用於儲存用戶的基本資訊,如姓名和電子郵件。
  • Profile:自定義的模型,用於擴展 User 模型,添加用戶的額外資料。

用戶基本資料更新表單

class UserUpdateForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ['first_name', 'last_name', 'email']

表單結構和作用

  • UserUpdateForm:用於處理 User 模型中的基本資料更新。
  • 繼承 forms.ModelForm:
    • 基於模型自動生成表單。
    • 表單的字段與模型字段直接對應,節省手動編寫表單代碼的時間。
  • Meta 類:
    • model = User:指定表單基於 User 模型。
    • fields:定義表單的字段,允許用戶更新名字(first_name)、姓氏(last_name)和電子郵件(email)。

用戶附加資料更新表單

class ProfileUpdateForm(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ['photo', 'bio']

表單結構和作用

  • ProfileUpdateForm:用於處理 Profile 模型中的附加資料更新。
  • 繼承 forms.ModelForm:
    • 同樣基於模型自動生成表單。
  • Meta 類:
    • model = Profile:指定表單基於 Profile 模型。
    • fields:定義表單的字段,允許用戶更新照片(photo)和簡介(bio)。

模型關係設計

自定義的 Profile 模型通常用於擴展 Django 的內建用戶模型。

以下是一個典型的設計示例:

from django.db import models
from django.contrib.auth.models import User

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    photo = models.ImageField(default='default.jpg', upload_to='profile_pics')
    bio = models.TextField(blank=True)
  • OneToOneField:建立與 User 模型的一對一關係,每個用戶只能有一個對應的 Profile。
  • 字段設計:
    • photo:用戶的照片,默認為 default.jpg。
    • bio:用戶的簡介,允許為空。

實現效果

當用戶訪問編輯個人資料的頁面時,這兩個表單分別處理不同的數據:

  • UserUpdateForm:用於更新名字、姓氏和電子郵件。
  • ProfileUpdateForm:用於更新用戶照片和簡介。

結論

以上是基於 Django 的用戶更新表單設計,透過 User 和 Profile 模型的結合,能靈活地管理和更新用戶的基本資訊及附加資料,適合用於個人資料編輯功能的實現。

如果需要更複雜的功能,可以在模型或表單中添加更多的自定義邏輯來滿足需求。

目前還沒有留言,成為第一個留言的人吧!

發表留言

留言將在審核後顯示。

Python

目錄

  • 導入必要模組
  • 用戶基本資料更新表單
  • 表單結構和作用
  • 用戶附加資料更新表單
  • 表單結構和作用
  • 模型關係設計
  • 實現效果
  • 結論