Django基础教程(六十二)Django通用视图之ListView:Django ListView:别再当“复制粘贴”侠了,这份“懒人包”香疯了!

嘿,Django的小伙伴们,今天我们来聊一个能让你代码量瞬间“瘦身”,逼格直线飙升的神器——ListView

有没有过这种经历?产品经理屁颠屁颠跑过来:“哥,咱整个文章列表页,要能分页,最好还能搜一下…” 你表面微笑,心里已经开始盘算:视图里取数据、手动分页、处理GET参数、渲染模板… 一顿操作猛如虎,一看代码二十五(行)。

停!打住!从今天起,请把上面那个“勤劳”的你暂时封印。咱们要开启“优雅偷懒”模式了。Django的设计者早就看穿了一切,他们给你准备了一个名叫 ListView 的“万能懒人包”。

一、 ListView是个啥?为啥说它是“大聪明”?

你可以把 ListView 想象成一个高度智能的“工厂流水线”。它的专职工作就是从数据库里取出一“列表”的东西,然后塞给模板显示出来。

传统写法(老黄牛模式):

# views.py (传统写法)
from django.shortcuts import render
from .models import Article
from django.core.paginator import Paginator

def article_list(request):
    article_list = Article.objects.all() # 1. 获取所有文章
    paginator = Paginator(article_list, 10) # 2. 手动分页,每页10篇
    page_number = request.GET.get('page')
    page_obj = paginator.get_page(page_number) # 3. 获取当前页对象
    context = {'page_obj': page_obj} # 4. 构造上下文
    return render(request, 'blog/article_list.html', context) # 5. 渲染模板

看看,足足5个步骤,虽然不难,但每个列表页都这么写,烦不烦?

ListView写法(开挂模式):

# views.py (ListView模式)
from django.views.generic import ListView
from .models import Article

class ArticleListView(ListView):
    model = Article # 告诉它,你要操作哪个模型
    template_name = 'blog/article_list.html' # (可选)告诉它模板在哪
    context_object_name = 'articles' # (可选)告诉它上下文变量叫啥
    paginate_by = 10 # (可选)告诉它每页显示10条

完了! 对,就这么四行(甚至有些还是可选的),它就把上面老黄牛模式的所有活儿都干完了!分页?自动的!数据获取?自动的!模板渲染?自动的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值