路由
- 只要继承了ViewSetMixin及其子类的视图类,都可以变一种写法
路由的自动生成
-
- 创建router对象,注册视图集
# 1.导入
from rest_framework.routers import SimpleRouter,DefaultRouter
# 2.实例化
router = SimpleRouter()
# 3.注册
router.register('user',views.UserView,'user')
# 'user' 表示路由前缀
# view.UserView 表示视图集
# 'user' 最后的user表示路由别名的前缀
# 4.把生成的路由自动添加到urlpatterns里面
# 方式一:直接加
urlpatterns = []
urlpatterns+=router.urls
# 方式二:urlpatterns内直接写入,导入时导入include
urlpatterns = [
path('', include(router.urls))
]
-
- SimpleRouter与DefaultRouter
- DefaultRouter会显示出根路径下可以显示所有注册过的路由
action装饰器的使用
自动生成的路由映射关系其实定死了
/books/—>get—>list
/books/1—>get—>retrieve
-
- 视图类不需要写action装饰器的话,视图类里必须存在五个方法之一
- list,destroy,retrieve,create,update
- 其实必须是5个视图扩展类之一+GenericAPIView(即九个视图子类,ModelViewSet)
-
- 装饰器的使用与导入
- 这样可以自动生成路由
from rest_framwork.decorators import action
class UserView(ViewSet):
@action(methods=['GET','POST']