Django REST Framework-什么是路由

2023-04-24 20:34:30 浏览数 (1)

Django REST Framework(以下简称DRF)是一个强大的框架,用于在Django中构建Web API。路由(Routing)是DRF中的一个关键概念,用于确定请求的处理方式。

什么是路由?

在Web应用程序中,路由是用于决定如何处理传入请求的机制。在DRF中,路由的作用是将特定的URL与处理该URL请求的视图函数相匹配。DRF中的路由系统是基于Django的URL路由系统构建的。

DRF路由系统中最常见的两个路由是:SimpleRouter和DefaultRouter。这两个路由器都提供了方便的方法来将URL映射到视图函数上,但是它们之间存在一些差异,我们将在下面的章节中对它们进行更详细的解释。

SimpleRouter

SimpleRouter是DRF提供的最简单的路由器之一。SimpleRouter允许您使用DRF视图类作为视图函数来处理请求,并为每个视图类自动生成URL模式。下面是一个使用SimpleRouter的示例:

代码语言:javascript复制
from django.urls import path, include
from rest_framework import routers
from .views import ArticleViewSet

router = routers.SimpleRouter()
router.register(r'articles', ArticleViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

在上面的代码中,我们首先导入了必要的模块和视图类(ArticleViewSet),然后创建了一个SimpleRouter实例。接下来,我们使用register()方法向路由器中注册视图类,这将为每个视图类生成URL模式。最后,我们将路由器的URL模式包括在Django的urlpatterns中。

DefaultRouter

DefaultRouter是DRF提供的另一个路由器。与SimpleRouter不同的是,DefaultRouter自动生成API根视图,并为每个视图类生成URL模式。下面是一个使用DefaultRouter的示例:

代码语言:javascript复制
from django.urls import path, include
from rest_framework import routers
from .views import ArticleViewSet

router = routers.DefaultRouter()
router.register(r'articles', ArticleViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

在上面的代码中,我们首先导入了必要的模块和视图类(ArticleViewSet),然后创建了一个DefaultRouter实例。接下来,我们使用register()方法向路由器中注册视图类,这将为每个视图类生成URL模式。最后,我们将路由器的URL模式包括在Django的urlpatterns中。

路由配置

无论使用哪种路由器,我们都需要将路由器的URL模式包括在Django的urlpatterns中。此外,我们还需要为每个视图类提供一个URL模式。这可以通过在视图类中定义一个名为“basename”的属性来实现,如下所示:

代码语言:javascript复制
from rest_framework import viewsets

class ArticleViewSet(viewsets.ModelViewSet):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer
    # Define basename to generate URL pattern
    basename = 'articles'

在上面的代码中,我们定义了一个ArticleViewSet类,并继承了DRF的ModelViewSet类。我们设置了queryset和serializer_class属性,然后定义了一个名为“basename”的属性。这将告诉DRF生成URL模式时使用的基本名称。

0 人点赞