Django基础教程(129)Django ViewSets和Routers之使用ViewSets进行重构:别再用老土写法了!Django ViewSets魔法:让你代码量直接腰斩,爽到飞起!

Django ViewSets魔法重构

嘿,Django侠客们!今天咱们不聊那些枯燥的理论,来点实在的。你有没有过这种体验:写一个API,吭哧吭哧地定义BookListView(获取图书列表),再写BookCreateView(创建图书),接着是BookDetailView(获取单一图书)、BookUpdateView(更新图书)、BookDeleteView(删除图书)……

写着写着,你开始怀疑人生:“我这不就是在复制粘贴吗?除了URL和一丢丢逻辑,大部分代码长得跟亲兄弟似的!” 没错,这种感觉就像是你每天都在用手洗衣服,而隔壁老王已经用上了全自动洗衣机。

今天,我就是来给你送“全自动洗衣机”的——它就是 Django REST Framework (DRF) 中的 ViewSets 和 Routers

第一幕:回忆一下,那些年我们写过的“傻大粗”代码

在引入魔法之前,我们先缅怀一下“旧时代”的写法。假设我们正在构建一个简单的图书管理系统。

models.py (这个一直很优雅)

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=100)
    published_date = models.DateField()

    def __str__(self):
        return self.title

views.py (噩梦开始的地方)

from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import Book
from .serializers import BookSerializer

# 1. 获取所有图书 (GET)
@api_view(['GET'])
def book_list(request):
    books = Book.objects.all()
    serializer = BookSerializer(books, many=True)
    return Response(serializer.data)

# 2. 创建一本新书 (POST)
@api_view(['POST'])
def book_create(request):
    serializer = BookSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

# 3. 获取单一图书 (GET)
@api_view(['GET'])
def book_detail(request, pk):
    try:
        book = Book.ob
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

值引力

持续创作,多谢支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值