路由设置和视图选择
01-自动生成路由的使用
-
自动生成路由只会通过我们继承的扩展类来生成路由规则,我们自定义的部分方法是无法生成的
from rest_framework.routers import SimpleRouter, DefaultRouter urlpatterns = [...] route = DefaultRouter() route.register('books_drf', view_set.BooksModelViewSet, base_name='book') register(prefix, viewset, base_name) prefix 该视图集的路由前缀 viewset 视图集 base_name 路由名称的前缀 urlpatterns += route.urls
02-actions装饰器的使用
-
action装饰器参数中detail-False则不能自动正则匹配路由规则,反之则可以自动生成。
@action(methods=['get'], detail=False) def latest(self, request): ... @action(methods=['put'], detail=True) def read(self, request, pk): ...
-
自动生成路由只能在视图集中使用
-
self。aciton也只能在视图集中使用
-
drf调试页面
03-两个路由类的区别
-
SimpleRouter
-
DefaultRouter继承自SimpleRouter自动匹配首页
**总结:**DefaultRouter与SimpleRouter的区别是,DefaultRouter会多附带一个默认的API根视图,返回一个包含所有列表视图的超链接响应数据。
04-视图和视图集使用场景分析
- 根据具体功能使用不同视图或视图集
- 使用单一功能时:视图
- 使用增删改查多个功能时:视图集
- 强行使用视图集可能造成资源浪费
- 会造成数据不安全