嘿,Django侠客们!今天我们来聊一个能让你开发效率直接起飞的话题——Django REST Framework (DRF) 里的ViewSets和Routers。
我知道,我知道,你可能早就听过它们的大名。网上教程一抓一大把,基本都是告诉你:“用ModelViewSet,再往router里一register,哇塞,一套完整的CRUD API就诞生了!太神奇了!”
这感觉就像你去了一个大型相亲现场,Router这个“媒婆”大手一挥:“这俩,成了!”你就莫名其妙地和一个完整的API套餐绑定在了一起。爽是爽,但有时候你是不是也觉得……有点太“包办婚姻”了?你甚至没来得及问一句:“那个update方法,我能不能换个名字?那个create的路径,能不能别叫/users/,我想叫/signup/行不行?”
当然行!今天,咱们就要打破这种“包办婚姻”,走进一个更高级的“自由恋爱”市场。我们要显式地、手动地、充满爱意地,把特定的URL和ViewSets里的特定方法绑定起来。而Router,不再是那个独断专行的媒婆,而是变成了一个听你指挥的“最强僚机”。
第一幕:回忆一下,“包办婚姻”是怎么个事?
在深入“自由恋爱”之前,我们先快速回顾一下传统的“包办”流程。假设我们有个UserViewSet,它长这样:
# views.py
from rest_framework import viewsets, status
from rest_framework.decorators import action
from rest_framework.response import Response
from .models import User
from .serializers import UserSerializer
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
然后,在urls.py里,我们请出媒婆DefaultRouter:
# urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import UserViewSet
router = DefaultRouter()
router.register(r'users', UserViewSet) # 媒婆开始牵线!
urlpatterns = [
path('api/', include(router.urls)),
]
就这么两行代码,Router媒婆就自动为你生成了一整套URL:

最低0.47元/天 解锁文章
2万+

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



