as_view()方法是父类View中定义好继承过来的。其内部会自动实现根据请求方式的不同,get自动调用LoginView类中get、post请求方式会自动调用LoginView类中post方法等。 看源码,就从django.views.View类中的as_view()方法入手。 @classonlymethod def as_view(cls, **initkwargs): ... 说明: 1.这是一个类方法...
自动生成路由需要继承ViewSetMixin子类,重写了as_view()方法。 导入模块: fromrest_frameworkimportrouters 创建router对象,并注册视图集合,例如: router = SimpleRouter() router.register('books', views.BookAPIView) 参数解析: register(prefix, viewset, basename=None) # prefix -该视图集的路由前缀 # viewset -...
原来:执行 APIView的---》as_view内的 view(request) 原来:执行 ViewSetMixin的---》as_view内的 view(request) @classonlymethoddefas_view(cls, actions=None, **initkwargs):#actions={'get': 'list', 'post': 'create'}defview(request, *args, **kwargs): self= cls(**initkwargs)#self 是B...
actions=None, **initkwargs): # 这边显示如果没有actions的报错信息,然后从报错信息可以看出as_view()中应该携带一个字段的参数 # {'http请求动作':'类中的函数名'} if not actions: raise TypeError("The `actions` argument must be provided when " "calling `.as_view()` on a ViewSet. For ...
我们在路由中 类名.as_view({'get':'retrieve','delete':'remove_obj'})GenericViewSet:与模型类有关的接口视图集-可以从mixins那继承功能,也可以自定义功能 ViewSet:与模型类无关或不是标准模型类接口-一般都是自定义功能 三.generics中GenericAPIView使用 ...
在您的urls.py路由中添加装饰器,例如,login_required(ViewSpaceIndex.as_view(..))使用method_...
1) 请求走的是APIView的as_view函数 2) 在APIView的as_view调用父类(django原生)的as_view,还禁用了 csrf 认证 3) 在父类的as_view中dispatch方法请求走的又是APIView的dispatch 4) 完成任务方法交给视图类的请求函数处理,得到请求的响应结果,返回给前台 ...
view= super().as_view(**initkwargs)#调用了View的as_viewreturncsrf_exempt(view)#去掉了csrf的认证,跟原来加装饰器一样#假设get请求来了,执行view()--最重要的-->self.dispatch()--》APIView的defdispatch(self, request, *args, **kwargs):#把原来的request对象,包装成了新的request对象,是drf的reque...
【View】 来自Django 原生中,是所有基于类的view的父类,它负责将视图连接到URL、HTTP 方法调度(GET,POST等)和其它简单的功能。 【APIView】 APIView 是 DRF 中所有view的父类,本身继承于Django的view,只有简单的调度方法和检查。 【ViewSet】 ViewSet 继承了APIView 之外,还加入了 .as_view() 和.initialize_requ...
ViewSet/GenericViewSet 重写了as_view 方法,将HTTP的请求动作绑定到了具体的方法: GET grades/ list GET grades/1/ retrieve POST grades/ create PUT grades/1/ update PATCH grades/1/ partial_update DELETE grades/1/ destroy 第一章 DRF概述 第二章 DRF安装与项目创建 ...