Django REST Framework(以下简称DRF)是基于Django框架构建的Web API框架。在DRF中,路由器(Router)是一个非常有用的工具,可以帮助我们轻松地定义API的路由,实现快速、可维护的API开发。
【资料图】
在DRF中,路由器的主要作用是将URL和视图函数绑定在一起。路由器可以根据视图函数的名称和参数,自动生成URL,并将请求分发到对应的视图函数中。使用路由器可以避免手动编写URL配置的繁琐和容易出错。
在使用路由器之前,需要先安装DRF。可以使用pip命令安装:
pip install djangorestframework
创建路由器非常简单,只需要在views.py中导入DefaultRouter类,然后创建一个router实例即可:
from rest_framework import routersrouter = routers.DefaultRouter()
使用路由器注册视图函数有两种方式:基于视图集(Viewsets)和基于视图(Views)。
(1)基于视图集
在DRF中,视图集是一组视图函数的集合,可以实现类似于CRUD的操作。使用视图集需要先定义一个继承自ModelViewSet或ViewSet的类,然后将这个类传递给路由器的register方法即可。
例如,下面的代码定义了一个继承自ModelViewSet的视图集类BookViewSet,然后将这个类注册到路由器中:
from rest_framework import viewsetsfrom .models import Bookfrom .serializers import BookSerializerclass BookViewSet(viewsets.ModelViewSet): queryset = Book.objects.all() serializer_class = BookSerializerrouter.register(r"books", BookViewSet)
在这个例子中,我们将BookViewSet注册到了/books的URL上。此时,路由器会自动根据BookViewSet的名称和默认的操作(list、create、retrieve、update、partial_update和destroy),生成如下的URL:
HTTP Method | URL | Action |
---|---|---|
GET | /books/ | list |
POST | /books/ | create |
GET | /books/{id}/ | retrieve |
PUT | /books/{id}/ | update |
PATCH | /books/{id}/ | partial_update |
DELETE | /books/{id}/ | destroy |
(2)基于视图
除了视图集,我们也可以使用基于视图的方式来注册视图函数。这个方法需要将视图函数包装成APIView或View的子类,然后将这个类的实例传递给路由器的register方法即可。
例如,下面的代码定义了一个继承自APIView的视图类HelloView,然后将这个类注册到路由器中:
from rest_framework.views import APIViewfrom rest_framework.response import Responseclass HelloView(APIView): def get(self, request): return Response("Hello, World!")router.register(r"hello", HelloView.as_view(), basename="hello")
在这个例子中,我们将HelloView注册到了/hello的URL上。由于HelloView继承自APIView,因此需要使用as_view方法将其转换为视图函数。
注册视图函数之后,还需要将路由器添加到Django的URLconf中。这可以通过在urls.py文件中添加以下代码实现:
from django.urls import path, includeurlpatterns = [ path("", include(router.urls)),]
这个例子中,我们将路由器的URL添加到了Django的根URLconf中。这意味着我们可以通过访问/来访问我们注册的所有API。
下一篇:最后一页
从燃油车时代到新能源时代,整个车市都经历着转型的阵痛,如今的价格战就是一个很典型的现象,面对价格大乱斗,可以说绝大多数的车企都采用
近些年,随着自主品牌纷纷聚焦发力SUV,更多高品质、智能化的SUV逐步推向市场,也使得整个SUV市场逐渐内卷化,许多实力相近的产品,已经展
每当我们谈到性能车、JDM等话题时,似乎总是绕不过去一个名字:思域。15万左右的售价,7秒多就能够破百的动力表现,思域被冠以神车头衔,成
2022年8月15日,哈弗新能源技术媒体沟通会在北京举行。哈弗品牌CEO李晓锐、CTO吕文斌,与多位资深车圈媒体大咖分享了哈弗品牌2022年上半年
本不想躺平周末,浪费这难得的大好时光,但如何做,才能让自己的周末生活更有趣、过得更有意义呢?不如把自己交给哈弗H6S吧!出色性能+极致驾
油价起伏不定,环保意识逐步提高,今天的汽车消费者在选车时,对产品的经济、节能方面往往会有更多的苛求。正是因此,我国的汽车产业也在逐
导语:哈弗品牌狗品类家族迎来新成员哈弗酷狗的上市,凭借独特的敢性力量美学设计风格、强大的轻越野四驱能力与专业调校的音响系统收获了年
每个男人心中都有一个越野梦,但大多碍于账户余额迟迟没有实现。上个月,无意间看到了一场新车上市直播,哈弗大狗追猎版在库布齐沙漠的精彩
如果说工作是为了生存,那么周末存在的意义,便是让我们不负生活。熬过忙碌的五天工作日,周末怎能轻易躺平?顺从自己那颗躁动的心,来一场
年轻人想要一款什么样的SUV?对于这个问题,每个人心中其实都有着不同看法,或更在意外观,或更看重性能,或更注重配置等等。那么,有没有一
X 关闭
X 关闭