DW学习笔记:Django后端开发入门之Task06
DefaultRouter的使用
1. DefaultRouter简介
DefaultRouter
是一个用于自动生成API的URLs的类。它能够帮助开发者快速地创建一套遵循RESTful设计的API,而无需手动定义每一个URL模式。DefaultRouter
会自动为我们的views创建对应常见RESRful操作的URLs,比如实现获取对象的列表(GET)、获取特定对象(GET)、创建新对象(POST)、更新一个对象(PUT/PATCH),以及删除一个对象(DELETE)。
2.DefaultRouter的作用
- 提高效率:通过自动生成URLs,开发者无需手动为每个API操作定义一个URL模式,从而提高了开发效率。
- 保持一致性:
DefaultRouter
生成的URLs遵循RESTful设计原则,有助于保持API的一致性和可预测性。 - 简化代码:使用
DefaultRouter
可以减少urls.py文件中的代码量,使代码更加简洁。
3.使用方法
3.1.导入库函数
在urls.py
文件中导入DefaultRouter
,以及想要包含在路由器中的ViewSet
。
# 导入DefaultRouter
from rest_framework.routers import DefaultRouter
# 导入需要的viewset与其他函数
from django.contrib import admin
from django.urls import path
from apps.DW_study.views import *
from apps.DW_study.views import *
中的apps.DW_study.views
应该根据实际情况去设置,在我的项目中,应用DW_study
保存在apps文件夹下。总之,要保证这里的路径是指向应用中的ViewSet
。
3.2.实例化DefaultRouter并注册ViewSet
在导入了必要库函数之后,实例化DefaultRouter
,并且通过register
方法注册ViewSet
。
router = DefaultRouter()
router.register('GoodsCategory', GoodsCategoryViewSet)
在一般的项目中,要确保register
方法中的两个参数指向实际的路径。
# register的原始定义
class BaseRouter:
def register(self, prefix, viewset, basename=None):
在register
的原始定义中,prefix
是url的基础路径,ViewSet
是与该路径关联的ViewSet
,basename
是一个可选参数,它的作用是为生成的urls提供一个更清晰的名称。
3.3.在RUL配置中包含路由器的RULs
利用path
工具,更新定义urlpatterns
列表。
urlpatterns = [
path('admin/', admin.site.urls),
path('filtergoodscategory/', FilterGoodsCategory),
path('insertgoodscategory/', InsertGoodsCategory),
path('filtergoodscategoryapi/', FilterGoodsCategoryAPI.as_view()),
path('getgoods/', GetGoods.as_view()),
]
3.4.将router生成的urls添加到urlpatterns中
为了将DefaultRouter
自动生成的URL模式添加到urlpatterns
中,使用一下方法。这样,除了手动定义的URL模式外,还包括了由DefaultRouter
为GoodsCategoryViewSet
生成的RESTful API URL。
urlpatterns += router.urls
4. 运行展示
4.1.创建两个新对象
4.2. 获取id2的对象
获取id为3的对象
因为不存在,所以提示404 Not Found
5.报错
在学习这一节内容是,遇到的报错主要是路径设置的问题,请务必保证路径指向均正确。
值得注意的点包括,app的路径、库函数的导入方法……