Django中DefaultRouter()的功能及使用示例
DefaultRouter()是Django REST framework中的一个路由器类,用于为视图集提供默认的URL路由。它为视图集提供了一组标准的URL路由规则,包括通过HTTP动词自动关联到视图集中的方法。使用DefaultRouter()可以方便地生成常规的CRUD(增加、查询、更新、删除)路由。
使用示例:
首先需要在Django项目的urls.py文件中导入DefaultRouter和视图集类:
from rest_framework.routers import DefaultRouter from myapp.views import MyModelViewSet
然后创建一个DefaultRouter的实例:
router = DefaultRouter()
接下来使用router.register()方法将视图集类与路由器关联起来:
router.register(r'mymodel', MyModelViewSet)
其中, 个参数是URL路径的前缀,第二个参数是视图集类。这样,'/mymodel/'路径就会被路由器自动映射到MyModelViewSet类的相应方法上。
最后,将路由器的urls属性添加到项目的URLconf中:
urlpatterns = [
...
path('api/', include(router.urls)),
]
这样,Django REST framework就会自动为MyModelViewSet类生成以下URL路由:
- GET /mymodel/ - 获取所有MyModel对象的列表
- POST /mymodel/ - 创建新的MyModel对象
- GET /mymodel/{pk}/ - 获取指定ID的MyModel对象
- PUT /mymodel/{pk}/ - 更新指定ID的MyModel对象
- DELETE /mymodel/{pk}/ - 删除指定ID的MyModel对象
同时,路由器还自动为每个视图集类中定义的动作方法生成了其他路由规则,如下:
- GET /mymodel/{pk}/action/ - 执行动作方法action(),其中{pk}为MyModel对象的ID
- POST /mymodel/{pk}/action/ - 执行动作方法action(),其中{pk}为MyModel对象的ID
使用DefaultRouter()可以简化URL路由的配置,提高开发效率。但需要注意的是,它只适用于视图集类,不能用于函数或基于类的视图。
