Django REST framework内置路由用法

yizhihongxing

Django REST framework(DRF)提供了内置路由用于自动生成viewset的API路由,且在性能上有很好的表现。这篇攻略将介绍DRF内置路由的用法,包括常用的API路由类型以及如何使用内置路由来为viewset生成API路由。在本攻略中,我们将使用Django 3.0.4和DRF版本3.11.0。

什么是DRF内置路由

DRF内置路由是指直接在viewset上使用的路由。使用内置路由,就无需手动编写urlpatterns列表,而只需要使用SimpleRouter或者DefaultRouter类,DRF会默认生成urlpatterns给我们。这极大地简化了API路由的编写,并且提高了API的性能,尤其是在大型Web应用程序中,其中有许多动态视图和路由。

DRF内置路由的类型

DRF内置路由一共有两种类型:SimpleRouterDefaultRouter

  1. SimpleRouter:仅支持基于viewset的视图方法,其路由的URI格式为/<basename>/
  2. DefaultRouter:支持基于viewset的视图方法和其他非viewset的API函数,同时扩展了DRF内置路由系统的功能,其路由的URI格式为/<basename>[/pk][/action]

使用内置路由为viewset生成API路由

在使用DRF内置路由时,需要使用SimpleRouterDefaultRouter类来构造路由,并将其与viewset对象相关联。然后使用DRF内置路由系统,它可以自动地为viewset对象生成API路由。在此过程中,你应该指定URL前缀和viewset对象作为这个路由器方法的参数。

下面是使用SimpleRouterDefaultRouter生成路由的示例:

1. 使用SimpleRouter生成路由

from rest_framework import routers
from .views import ArticleViewSet

router = routers.SimpleRouter()   # 实例化SimpleRouter
router.register(r'articles', ArticleViewSet)   # 关联viewset
urlpatterns = router.urls   # 赋值给urlpatterns

在上面的示例中,我们先实例化了SimpleRouter,并将其命名为router。然后使用router.register()方法将viewset对象ArticleViewSet关联到路由器上,并指定了URL前缀为articles。最后,我们使用router.urls属性来将路由添加到Django项目的urlpatterns中。

2. 使用DefaultRouter生成路由

from rest_framework import routers
from .views import ArticleViewSet
from .views import Comment

router = routers.DefaultRouter()   # 实例化DefaultRouter
router.register(r'articles', ArticleViewSet)   # 关联viewset
router.register(r'comments', Comment, basename='comment')   # 关联普通view,为相应路由赋予basename 'comment'
urlpatterns = router.urls   # 赋值给urlpatterns

在上面的示例中,我们实例化了DefaultRouter,并将其命名为router。然后使用router.register()方法将ArticleViewSetComment对象注册到路由器中。注意,我们将Comment视图作为普通的view函数来注册到路由器中,并指定了basename为comment。这意味着路由仅包含名称为“comment”的部分,并且在该部分的URL中使用'/pk/action'的格式。

总结

本攻略提供了DRF内置路由的用法和示例。DRF内置路由是一个非常强大和有效的工具,可以减少开发人员创建API路由的复杂度,提高API的性能。通过使用SimpleRouterDefaultRouter类,我们可以轻松地为viewset编写API路由,并将之集成到Django项目中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django REST framework内置路由用法 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • Nginx配置Basic Auth登录认证的实现方法

    下面是关于Nginx配置Basic Auth登录认证的实现方法的完整攻略: 什么是Basic Auth认证 Basic Auth认证,即基本认证,是HTTP协议中的一种认证方式,也叫做HTTP基本认证。在进行Basic Auth认证时,客户端将用户名和密码以明文的方式发送给服务器,服务器进行验证,如果用户验证通过,则允许访问受保护的资源。 Nginx配置Ba…

    人工智能概览 2023年5月25日
    00
  • python图形开发GUI库wxpython使用方法详解

    Python图形开发GUI库wxPython使用方法详解 wxPython是一个开源的Python图形开发GUI库,它可以用来创建本机GUI应用程序,wxPython是对wxWidgets C++ 代码库的Python绑定。 安装wxPython 在使用wxPython之前,需要先安装它。在Windows上,可以从wxPython的官方网站(https://…

    人工智能概览 2023年5月25日
    00
  • 关于Python中flask-httpauth库用法详解

    关于Python中flask-httpauth库用法详解的攻略,我会整理成以下几个部分: 什么是flask-httpauth库? 安装flask-httpauth库及依赖 使用flask-httpauth库进行HTTP身份验证 示例说明 基本的HTTP身份验证示例 使用flask-login实现基于session的身份验证示例 下面我会逐一详细讲解这些内容。…

    人工智能概论 2023年5月25日
    00
  • Django实现文章详情页面跳转代码实例

    当用户点击文章列表中某一篇文章时,需要将用户跳转到该文章的详情页面,这个过程中需要进行URL路由和视图函数的编写。下面就是Django实现文章详情页面跳转的完整攻略: 1.添加URL路由 首先需要在Django中添加URL路由。URL路由负责将请求的URL地址与名称相匹配的视图函数进行对应,进而返回相应的响应结果。在应用的urls.py文件中添加以下代码,表…

    人工智能概论 2023年5月24日
    00
  • IDEA maven项目中刷新依赖的两种方法小结

    当我们在IDEA中使用maven进行Java项目开发时,经常需要添加或修改项目依赖,而这时依赖库不会自动加载进来,需要手动刷新。接下来,我们将讲解IDEA maven项目中刷新依赖的两种方法小结: 方法一:在Maven Projects视图中右击,点击’Reload All Maven Projects’选项 步骤: 点击IDEA右侧的’Maven’视图 t…

    人工智能概览 2023年5月25日
    00
  • Python实现电视里的5毛特效实例代码详解

    Python实现电视里的5毛特效实例代码详解 1. 什么是电视里的5毛特效 电视里的5毛特效,也称为电视节目中常用的插图字幕效果。5毛特效是一种制作简单快速、易于呈现、炫酷的字幕效果,常被广告代理公司、电视媒体使用。它的特点是文字机械卡拉OK效果,叠加多个效果后提高层次感。 现在,我们来学习如何使用Python实现电视里的5毛特效。 2. 实现步骤 2.1 …

    人工智能概览 2023年5月25日
    00
  • pycharm+django创建一个搜索网页实例代码

    下面我将为您详细讲解使用PyCharm和Django来创建一个搜索网页的完整攻略。 1. 环境配置 首先,需要在您的电脑上安装Python和PyCharm。安装完成后,需要在PyCharm中创建一个新的Django项目。在PyCharm的主菜单中选择 “File” -> “New Project”,然后选择 “Django” 选项,并填写相关信息。 2…

    人工智能概论 2023年5月24日
    00
  • python 三边测量定位的实现代码

    关于“python 三边测量定位的实现代码”的完整攻略,我将从以下几个方面进行详细讲解: 什么是三边测量定位 三边测量定位的基本原理 Python实现三边测量定位的示例代码 两条示例说明 什么是三边测量定位 三边测量定位,也被称为三角定位,是一种通过量测两个物体与观察点之间的距离,并通过计算来确定物体位置的技术。在工程和测绘中,三边测量定位是一种非常常见的方…

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部