嘿,Django的玩家们,是不是又在视图里写着仿佛“俄罗斯套娃”一样的代码?从数据库取数据、塞进模板、渲染返回……一遍又一遍,感觉自己像个无情的代码搬运工?
别慌!今天咱就来聊聊Django里的“秘密武器”——基于类的通用视图,我更喜欢叫它们 “魔法卷轴” 。为啥?因为你不用再从头搓火球术(写重复代码)了,直接摊开卷轴(继承一个类),念出咒语(设置几个属性),嘭!一个功能完备的页面就出来了!
一、 为啥要“弃暗投明”,从函数视图转向类视图?
想象一下,你是个铁匠(程序员),之前每打一把剑(写一个视图),都得从烧炉子(处理HTTP方法)开始,抡大锤(写业务逻辑),最后打磨开刃(返回HttpResponse)。累不累?
函数视图的“苦”日子:
# 一个简单的文章列表视图,是不是很眼熟?
from django.shortcuts import render
from .models import Article
def article_list(request):
if request.method == 'GET':
articles = Article.objects.filter(status='published').order_by('-publish_date')
return render(request, 'blog/article_list.html', {'article_list': articles})
# 万一要处理POST呢?还得再加if...头疼!
看到了吗?光是取个列表,就得好几行。如果再来个分页、权限控制,这函数就得“膨胀”成一座小山。
而基于类的视图(CBV),它天生就是OOP(面向对象编程)的贵族。它把不同的HTTP方法(GET, POST)自动分发到对应的类方法里(比如 get(), post()),结构清晰得像一本整理好的说明书。
那么,通用类视图(GCBV),就是Django官方基于CBV,为我们提前写好的、解决特定场景的“标准说明书模板”或者说“魔法卷轴”。
二、 “魔法卷轴”库:认识你的工具箱
Django的GCBV主要存放在django.views.generic里,它们各有神通,主要分四大门派:
- 列表派(List View):擅长展示一堆东西,比如文章列表、商品列表。核心是
ListView。 - 详情派(Detail View):擅长展示一个东西的详细信息,比如文章详情、用户资料。核心是
DetailView。 - 创造派(Create View):擅长创建一个新东西

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



