小象网 |
  • 手机客户端
  • 微信
您的位置:首页 > 综合 > 正文
全球新消息丨Django REST Framework-路由器(一)
来源:腾讯云 2023-04-25 18:34:35

Django REST Framework(以下简称DRF)是基于Django框架构建的Web API框架。在DRF中,路由器(Router)是一个非常有用的工具,可以帮助我们轻松地定义API的路由,实现快速、可维护的API开发。


(资料图片)

一、路由器的作用

在DRF中,路由器的主要作用是将URL和视图函数绑定在一起。路由器可以根据视图函数的名称和参数,自动生成URL,并将请求分发到对应的视图函数中。使用路由器可以避免手动编写URL配置的繁琐和容易出错。

二、路由器的使用

安装DRF

在使用路由器之前,需要先安装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方法将其转换为视图函数。

添加路由器到URLconf

注册视图函数之后,还需要将路由器添加到Django的URLconf中。这可以通过在urls.py文件中添加以下代码实现:

from django.urls import path, includeurlpatterns = [    path("", include(router.urls)),]

这个例子中,我们将路由器的URL添加到了Django的根URLconf中。这意味着我们可以通过访问/来访问我们注册的所有API。

图片新闻

Copyright @ 2008-2017 www.xiaoxiangwang.cn All Rights Reserved 小象网 版权所有

联系我们:bfce@sohu3.com