drf之视图案例】的更多相关文章

views.py from django.shortcuts import render # Create your views here. from rest_framework.generics import GenericAPIView from rest_framework.response import Response from rest_framework.views import APIView from bookset.models import BookInfo from .…
DRF的视图 APIView 我们django中写CBV的时候继承的是View,rest_framework继承的是APIView,那么他们两个有什么不同呢~~~ urlpatterns = [     url(r'^book$', BookView.as_view()),     url(r'^book/(?P<id>\d+)$', BookEditView.as_view()), ] 我们可以看到,不管是View还是APIView最开始调用的都是as_view()方法~~那我们走进源码看看…
DRF的视图 APIView Django中写CBV的时候继承的是View,rest_framework继承的是APIView, urlpatterns = [ url(r'^book$', BookView.as_view()), # url(r'^book/(?P<id>\d+)', BookEditView.as_view()), url(r'^book$', BookModelView.as_view({"get": "list", "…
APIView和View的区别 -- APIView继承了View -- APIView 重写了as_view以及 dispatch方法 -- 在dispatch里重新封装了request  -- request = Request()  -- 旧的request变成了_request -- get请求数据  -- request.query_params -- post请求的数据  -- request.data Django Rest Framework 视图和路由   DRF的视图 API…
DRF 的视图,路由和渲染器 1 视图 简单的增删改查 : ModelViewSet; 复杂的操作使用APIView 和 GenericViewSet APIView(View) class HomeView(APIView): def get(self,request,*args,**kwargs): user_list = UserInfo.objects.all() ser = IndexSerializer(user_list,many=True) return Response(ser…
目录 DRF的视图组件 两大视图类 六大视图工具类 九大工具视图类 两大视图集基类 DRF的视图组件 DRF的视图组件大概分以下几类 两大视图类 APIView.GenericAPIView from rest_framework.views import APIView from rest_framework.generics import GenericAPIView ''' APIView继承Django的View 1) View:将请求方式与视图类的同名方法建立映射,完成请求响应 2)…
视图家族 view:视图 generics:工具视图 mixins:视图工具集 viewsets:视图集 学习曲线: APIView => GenericAPIView => mixins的五大工具类 => generics中的工具视图 => viewsets中的视图集 一.GenericAPIView基类 # GenericAPIView是继承APIView的,完全兼容APIView # 重点:GenericAPIView在APIView基础上完成了哪些事? 1)get_quer…
 同样的增删改查操作,如果我们还像之前序列化组件那样做,代码重复率过多,所以我们用视图表示: 具体源码实现:首先定义一个视图类,然后根据mixin点进去有五个封装好的方法,这五个方法共有的属性就是都需要一个queryset和序列化,所以五个方法都需要写这两个东西. 前边是查询单条数据,后边的类是查询多条数据.要区分开. 其中对应关系 ListModelMixin----------get----------单条数据的查询 CreateModelMixin-------post---------增…
1. 视图 Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验.保存.转换数据) 控制数据库查询的执行 1.1. 请求与响应 1.1.1 Request REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的Request类的对象. REST framework 提供了Parser解析器,在接收到请求后会自动根据Content-Ty…
不断的优化我们写的程序,是每个程序员必备的技能和职业素养,也是帮助我们成长的非常重要的手段. 使用serializer进行put接口设计 根据规范,PUT接口用来定义用户对数据修改的逻辑,也就是update,它的url是这样的, 127.0.0.1/books/1/,请求方式是PUT,1代表的是具体的数据,使用户动态传递的,所以我们的url应该是这样的: re_path(r'books/(\d+)/$', views.BookFilterView.as_view()), 此时我们应该重新定义一个…
基础视图 1.基础函数视图(@api_view) DRF提供了一种函数基础视图来装饰Django的普通视图,我们可以使用request来接受请求和response响应.一个小例子: from rest_framework.decorators import api_view @api_view def hello_world(request): return Response({"message":"Hello world!"}) 1)@api_view使用方法 这…
刚开始写views.py模块的代码,一般都是用def定义的函数视图,不过DRF更推荐使用class定义的类视图,这能让我们的代码更符合DRY(Don't Repeat Yourself)设计原则: 使用APIView rest_framework.views.APIView是DRF封装的API视图,继承了django.views.generic.base.View: 我们用它把函数视图改写成类视图,编辑snippets/views.py: from snippets.models import…
1. 两个基类 1)APIView Django REST_framework 中所有视图的基类是APIView   父类是View 支持定义的属性: authentication_classes 列表或元祖,身份认证类 permissoin_classes 列表或元祖,权限检查类 throttle_classes 列表或元祖,流量控制类 在APIView中仍以常规的类视图定义方法来实现get() .post() 或者其他请求方式的方法. 举例: from rest_framework.view…
一.视图(视图函数) Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验.保存.转换数据) 控制数据库查询的执行 1.请求与响应 1.request REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的**Request**类的对象. REST framework 提供了**Parser**解析器,在接收到请求后会自动根据Cont…
1.为什么要进行封装 1.1 在处理表的时候,如果有几十张表都需要增删改查查时,如果每一张表都写这些方法,会让代码显得冗余,所以需要将这些方法进行封装,然后不同的表都去继承这写方法.(这是思路) 1.2 分析需要自定义的内容 1.2.1 获取到的对象,根据不同的表结构,获取不同的对象内容,比如book_obj , publiser_obj, authors_obj 等等.   所以 这些   quser_set = None ,到时候根据不同的表去继承. 1.2.2 序列化器也不同,所以需要se…
视图 Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验.保存.转换数据) 控制数据库查询的执行 2个视图基类 APIView rest_framework.views.APIView APIView是REST framework提供的所有视图的基类,继承自Django的View父类. APIView与View的不同之处在于: 传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象: 视图方法…
一.视图层封装 二.ViewSetMixin 三.路由配置 四.解析器 五.响应器 一.视图层封装 1.基本视图 写一个出版社的增删改查resfull接口 路由: url(r'^publish/$', views.PublishView.as_view()), url(r'^publish/(?P<pk>\d+)/$', views.PublishDetailView.as_view()), 视图: class PublishSerializers(serializers.ModelSeria…
一.restfull规范的简单介绍 1.介绍 REST:表述性状态转移,是一种web交互方案 资源:在web中只要有被引用的必要都是资源 URI: URI 统一资源标识符 URL 统一资源定位符 统一资源接口 根据HTTP请求方式的不同对资源进行不同的操作 遵循HTTP请求方式的语义 前后端传输的叫资源的表述 前端展现的叫资源的状态 通过超链接的指引告诉用户接下来有哪些资源状态可以进入 2.restfull规范 核心思想 -- 面向资源去编程 每个url就是资源的体现 尽量用名词不要用动词 --…
Django Rest Feamework 视图和路由 DRF的视图 APIView 我们django中写CBV的时候继承的是View,rest_framework继承的是APIView,那么他们两个有什么不同呢 urlpatterns = [ url(r'^book$', BookView.as_view()), url(r'^book/(?P<id>\d+)$', BookEditView.as_view()), ] 我们可以看到,不管是View还是APIView最开始调用的都是as_vi…
视图组件  -- 第一次封装   -- GenericAPIView(APIView):    queryset = None    serializer_class = None    def get_queryset(self):     return self.queryset.all()    def get_serializer(self, *args, **kwargs):     return self.serializer_class(*args, **kwargs)   --…
目录 一.DRF介绍 1. 什么是DRF 2. 为什么要用DRF (1)使用DRF的原因 (2)站在开发者的角度来说用DRF的好处(暂时列举这么多) 二.用DRF开发后端项目 三.APIView请求生命周期 四.源码的dispatch中的方法 1. dispatch中的功能模块 (1)请求模块 (2)解析模块 (3)响应模块 (4)渲染模块 (5)异常模块 一.DRF介绍 1. 什么是DRF DRF就是django框架的一个插件或者说是django的一个工具包,用于在Web后台构建Restful…
目录 DRF 视图组件 视图组件大纲 两个视图基本类 五个扩展类 九个子类视图 视图集 常用视图集父类 魔法类 一览表 DRF中视图的"七十二变" 第一层:基于APIview的五个接口 第一层五个接口demo 第二层:基于GenericAPIView的五个接口 常用类属性: 第二层五个接口demo 第三层:基于GenericAPIView+五个视图扩展类写 第三层五个接口demo GenericAPIView速写五个接口demo 第四层:GenericAPIView+九个视图子类写五个…
用户登录 自定义用户登录字段处理 用户的登录时通过 手机号也可以进行登录 需要重写登录验证逻辑 from django.contrib.auth.backends import ModelBackend class CustomBackend(ModelBackend): def authenticate(self, username=None, password=None, **kwargs): try: user = User.objects.get(Q(username=username)…
Django Rest Framework 视图和路由   DRF的视图 APIView 我们django中写CBV的时候继承的是View,rest_framework继承的是APIView,那么他们两个有什么不同呢~~~ urlpatterns = [ url(r'^book$', BookView.as_view()), url(r'^book/(?P<id>\d+)$', BookEditView.as_view()), ] 我们可以看到,不管是View还是APIView最开始调用的都是…
1. Web应用模式. 在开发Web应用中,有两种应用模式: 前后端不分离 2.前后端分离 2. api接口 为了在团队内部形成共识.防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实现规范,而且这种规范能够让后端写的接口,用途一目了然,减少双方之间的合作成本. 目前市面上大部分公司开发人员使用的接口服务架构主要有:restful.rpc. rpc: 翻译成中文:远程过程调用[远程服务调用]. http://www.lufei.com/api post请求 action=get_…
# 其实就是Django RESTful Framework # RESTful一种API的命名风格,主要因为前后端分离开发出现 # 前后端分离: 用户访问静态文件的服务器,数据全部由ajax请求给到 # RESTful风格:数据应该是名词,而动词由HTTP的请求方式来体现 # RESTful风格的API给前端返回 结果对象,无论什么请求方式'''特点: 反复重复因为不论什么请求方式,都需要给前端返回对象内容,就是json格式的所以每次如果有查询的结果对象都需要遍历成字典,和flask相同如果不…
>> (1)RESTful api 规范 和 DRF 的基本介绍 >> (2)DRF 的 认证系统实现 >> (3)DRF 的 权限系统实现 >> (4)DRF 的 用户频率限制系统实现 >> (5)综合使用 认证 权限 限流 >> ( 6 ) DRF 的 版本控制,解析器,与序列化 >> ( 7 )  DRF 返回数据的封装,和分页 >> ( 8 )  DRF 的视图,路由和渲染器 >> ( 9…
Django REST Framework JWT提供了一个视图.在我们登录的时候,会校验用户名.密码是否正确.如果信息无误,可以返回一个JWT token.就可以简单地实现了记录用户登录状态. 用法: 只需要在路由配置一下即可: from rest_framework_jwt.views import obtain_jwt_token urlpatterns=[ ... url(r'login$',obtain_jwt_token) ] 这样就可以实现登录之后,返回JWT token了. 至于…
一.频率组件 1.使用DRF简单频率控制实现对用户进行访问频率控制 1)导入模块,定义频率类并继承SimpleRateThrottle # 导入模块 from rest_framework.throttling import SimpleRateThrottle # 定义频率类并继承SimpleRateThrottle class RateThrottle(SimpleRateThrottle): rate = '5/m' # 指定访问频率,5/m表示 每分钟5次 def get_cache_k…
概要 url注册器 响应器 分页器 url注册器 通过DRF的视图组件,数据接口逻辑被我们优化到最剩下一个类,接下来,我们使用DRF的url控制器来帮助我们自动生成url,使用步骤如下: 第一步:导入模块 from rest_framework import routers 第二步:实例化一个router对象 router = DefaultRouter() 第三步:将需要自动生成url的接口注册到router中 router.register(r'books', views.BookView)…