视图类必须是ViewSetMixin的子类才能自动生成路由。 
方式一:
DefaultRouter() 会生成一个根路由 /   根里会显示可以访问哪些路由。
SimpleRouter() 不会生成根路由,其他的两个都一样。



方式二:
路由分发include

对象register方法有三个参数。register('book',views.Book_APIView,'book')

参数一、 prefix, 前缀
参数二、 viewset, 视图类
参数三、 basename=None 别名。

 

 

视图类中重写某个方法:

以后再修改某个方法继承Five_Methods就可以了。

 

 

 

*******在子类中写自己的属性和方法"派生",子类也叫派生类。*******

1、用action有参装饰器自动生成路由。
detail=False  #查询所有。    生成的路由是: /前缀/函数名     GET方法才触发它。
detail=True  # 查询单条       生成的路由是:/前缀/3/函数名/   
视图类中有个action属性,是本次请求执行的函数名。这个action属性是ViewSetMixin里的。

@action(methods=['GET',],detail=True,url_path='login') # url_path是路径的名称
def login(self,request,*args,**kwargs):   # GET请求执行login
  print(self.action)       # 这个action 是对象的属性,不是装饰器,它是本次请求执行的函数名。
  print(kwargs)          # detail=True 才有pk,反之就没有。可以查它的详情。
  return Response('登录成功')

 

总结:
自动生成路由的视图类:继承ViewSetMixin或它的子类+九个视图子类。 因为ViewSetMixin没有方法。
action装饰器自动生成路由的视图类:继承ViewSetMixin或它的子类+APIView或者GenericAPIView。

posted on 2021-07-14 12:37  孟玉  阅读(114)  评论(0)    收藏  举报