嘿,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
Django ViewSets魔法重构

最低0.47元/天 解锁文章

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



