
- Root - router1 - category1 - interface1 - prefix1 - prefix2 - interface2 - prefix21 - category2 - router2 - category21 大概是这样一个结构. 其中 category 可忽略. 获取 router 信息 get `*/api/routers/` default_router.register( "api/routers", RouterViewset, base_name="RouterViewset" ) 获取 category summary 信息 get `*/api/routers/category_summary` 在 RouterViewset 中定义 @detail_route(methods=["get"]) def category_summary(self, request, router_id): pass 获取某个 router 中的 interface 信息 是这么写吧? get `*/api/routers/<router_id>/interfaces` 这样实现 @detail_route(methods=["get"]) def interfaces(self, request, router_id): pass 还是这么写? get `*/api/interfaces/?router-id=<id>` default_router.register( "api/interfaces", InterFaceViewset, base_name="InterFaceViewset" ) 以此类推 prefix 如何设计 api 同时如何用 drf 的 router 和 viewset 实现? 譬如 `*/api/routers/<router_id>/interfaces/<interface_id>/prefixes` 类似这样吗? default_router.register( "routers/(?P<router_id>\d+)/interfaces/", InterFaceViewset, base_name="EmixInterFaceViewset" ) @detail_route(methods=["get"]) def prefixes(self, request, router_id, interface_id): pass 上面的 url 岂不是被覆盖了? "routers/(?P<router_id>\d+)/interfaces/", InterFaceViewset, base_name="EmixInterFaceViewet" 和 get `*/api/routers/` default_router.register( "api/routers", RouterViewset, base_name="RouterViewset" ) 谢谢.
1 wuwukai007 Dec 3, 2019 个人建议还是不要用 viewsets 这种自动注册 url 的,generic 手写吧 |