Django - 管理後台
今天我們將學習如何有效利用 Django 的管理後台來管理資料。管理後台是 Django 的強大功能之一,可以快速操作資料庫數據,並對模型進行視覺化管理。
課程目標
- 瞭解 Django 管理後台的功能與用途。
- 學習如何自訂後台界面,提升管理效率。
- 掌握如何為管理後台新增與優化模型的呈現。
課程內容
1. 啟用管理後台
1.1 創建超級用戶
- 要使用 Django 的管理後台,首先需要創建一個超級用戶。
- 執行以下命令:
1
python manage.py createsuperuser
- 輸入用戶名、電子郵件和密碼以完成創建。
1.2 啟動開發伺服器
- 啟動伺服器並訪問管理後台:
1
python manage.py runserver
- 在瀏覽器中打開 http://127.0.0.1:8000/admin/,用剛剛創建的超級用戶帳號登入。
2. 註冊模型到管理後台
2.1 註冊模型
- 打開
admin.py
並將模型註冊到後台。 範例:
1 2 3 4
from django.contrib import admin from .models import Book admin.site.register(Book)
2.2 驗證模型顯示
- 刷新管理後台頁面,應該可以看到
Book
模型的條目。 - 點擊進入後可新增、編輯和刪除資料。
3. 自訂管理後台
3.1 使用 ModelAdmin
自訂行為
- 可以自訂模型在後台的顯示方式,增加更高的管理效率。
3.2 自訂列表頁面
- 在
admin.py
中使用ModelAdmin
顯示更多字段:1 2 3 4 5 6
@admin.register(Book) class BookAdmin(admin.ModelAdmin): list_display = ('title', 'author', 'published_date', 'price') # 顯示的欄位 list_filter = ('published_date', 'author') # 篩選條件 search_fields = ('title', 'author') # 搜索框 ordering = ('-published_date',) # 排序方式
3.3 自訂表單頁面
- 顯示特定的字段或群組:
1 2 3 4 5 6 7 8 9 10 11
@admin.register(Book) class BookAdmin(admin.ModelAdmin): fields = ('title', 'author', 'price') # 自訂顯示的字段 fieldsets = ( ('基本信息', { 'fields': ('title', 'author') }), ('價格信息', { 'fields': ('price',), }), )
4. 優化管理體驗
4.1 添加關聯模型
假設我們有一個
Author
模型與Book
模型相關聯:1 2 3 4 5 6 7 8
from django.db import models class Author(models.Model): name = models.CharField(max_length=100) bio = models.TextField(blank=True) def __str__(self): return self.name
將
Author
與Book
的關係在後台中顯示:1 2 3 4
@admin.register(Book) class BookAdmin(admin.ModelAdmin): list_display = ('title', 'author', 'published_date', 'price') search_fields = ('title', 'author__name') # 支援關聯搜索
4.2 使用內聯模型
在
Book
的表單中直接管理相關的Author
資料:1 2 3 4 5 6 7
class BookInline(admin.TabularInline): model = Book extra = 1 # 預設額外顯示的空白行數 @admin.register(Author) class AuthorAdmin(admin.ModelAdmin): inlines = [BookInline]
5. 自訂後台樣式與訊息
5.1 自訂站點標題
- 在
admin.py
中修改後台標題:1 2 3
admin.site.site_header = "Django 課程管理後台" admin.site.site_title = "Django 後台" admin.site.index_title = "歡迎使用 Django 管理系統"
5.2 添加操作功能
為列表頁面添加批量操作:
1 2 3 4 5 6 7 8
@admin.register(Book) class BookAdmin(admin.ModelAdmin): actions = ['set_price_to_zero'] def set_price_to_zero(self, request, queryset): queryset.update(price=0) self.message_user(request, "成功將價格設置為 0!") set_price_to_zero.short_description = "將價格設置為 0"
6. 本日總結
- 瞭解了 Django 管理後台的功能與重要性。
- 學會註冊模型並自訂後台行為以提升管理效率。
- 掌握了如何優化後台界面以適應實際需求。
作業
- 設計一個新的模型(例如
Publisher
),並在管理後台中添加與Book
的關聯。 - 自訂管理後台,為
Book
增加一個批量操作功能。 - 修改管理後台標題與描述,創建一個符合你應用主題的管理界面。
本文章以 CC BY 4.0 授權