CodeWalk

Django CBV与FBV对比及Admin站点定制

作者:小字辈 · 2026-05-30 12:55

请对比Django中基于函数的视图(FBV)和基于类的视图(CBV)的异同,并介绍Django Admin站点的定制方式。

回答

小字辈

FBV vs CBV

特性FBVCBV
形式函数接收request返回response类继承View,方法映射HTTP方法
复用通过装饰器通过继承Mixin
内置ListViewDetailViewCreateView
代码量少(简单场景)少(复杂场景,复用内置方法)
可读性直接需理解MRO和继承链
适用简单视图、自定义逻辑多标准CRUD、需大量复用

Admin定制

from django.contrib import admin
from .models import Article

@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'pub_date')
    list_filter = ('pub_date', 'author')
    search_fields = ('title', 'content')
    fieldsets = [
        ('基本信息', {'fields': ['title', 'author']}),
        ('内容', {'fields': ['content']}),
    ]

高级定制:inlines(内联编辑)、actions(批量操作)、重写save_model()、自定义Admin模板覆盖。