DRF全局总结】的更多相关文章

django restframework(DRF) 最近的开发过程当中,发现restframework的功能很强大,所以尝试解读了一下源码,写篇博客分享给大家,有错误的地方还请各位多多指出 视图部分 视图部分,主要负责查询方法,在编写代码的过程当中,按照具体功能和请求动作进行了拆分,方便开发者进行自定义的拼接. mixin Mixin 即 Mix-in,常被译为"混入",是一种编程模式, 像C或C++这类语言都支持多重继承,一个子类可以有多个父类,这样的设计常被人诟病.因为继承应该是个…
一.序列化类的增.删.改.查 用drf的序列化组件   -定义一个类继承class BookSerializer(serializers.Serializer):   -写字段,如果不指定source,字段名必须跟数据库字段名对应(source指定的值跟字段名不能重复)   -source还可以指定方法   -publish=serializers.SerializerMethodField()   def get_publish(self,obj):    obj.publish    #ob…
drf自定义用户认证: 登录默认 使用django的ModelBackend,对用户名和密码进行验证.但我们平时登录网站时除了用户名也可以用邮箱或手机进行登录,这就需要我们自己扩展backend 一.settings中配置 AUTHENTICATION_BACKENDS = ( 'users.views.CustomBackend', ) users.views中新建backend,对用户名或手机进行验证 二.users/views.py # users.views.py from django…
一 web应用模式 前后端不分离 前后端分离 二 RESTFUL API规范 REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Roy Fielding的博士论文中. RESTful是一种定义Web API接口的设计风格,尤其适用于前后端分离的应用模式中. 这种风格的理念认为后端开发任务就是提供数据的,对外提供的是数据资源的访问接口,所以在定义接口时,客户端访问的URL路径就表示这种要操作的数据…
一.Django的序列化方法 1.为什么要用序列化组件 做前后端分离的项目,我们前后端数据交互一般都选择JSON,JSON是一个轻量级的数据交互格式.那么我们给前端数据的时候都要转成json格式,那就需要对我们从数据库拿到的数据进行序列化. 2.表的构建 CHOICES = ((1, "python"), (2, "linux"), (3, "go")) # 书籍表 class Book(models.Model): title = models…
一.版本控制组件 1.为什么要使用版本控制 首先我们开发项目是有多个版本的当我们项目越来越更新,版本就越来越多,我们不可能新的版本出了,以前旧的版本就不进行维护了像bootstrap有2.3.4版本的,每个版本都有它对应的url,https://v2.bootcss.com/ . https://v3.bootcss.com/这就需要我们对版本进行控制,这个DRF也给我们提供了一些封装好的版本控制方法 2.原理 1. 在DRF框架中,它默认帮我们设置了版本信息在request.version和r…
一.频率限制 1.频率限制是做什么的 开放平台的API接口调用需要限制其频率,以节约服务器资源和避免恶意的频繁调用. 2.频率组件原理 DRF中的频率控制基本原理是基于访问次数和时间的,当然我们可以通过自己定义的方法来实现.当我们请求进来,走到我们频率组件的时候,DRF内部会有一个字典来记录访问者的IP,以这个访问者的IP为key,value为一个列表,存放访问者每次访问的时间, { IP1: [第三次访问时间,第二次访问时间,第一次访问时间], IP2: [第三次访问时间,第二次访问时间,第一…
视图组件 1.基本视图 url(r'^publish/$', views.PublishView.as_view()), url(r'^publish/(?P<pk>\d+)/$', views.PublishDetailView.as_view()), class PublishSerializers(serializers.ModelSerializer): class Meta: model=models.Publish fields='__all__' class PublishVie…
DRF 认证.权限.限制   认证: 定义一个用户表和一个保存用户的Token表 # ======================day96======================= class UserInfo(models.Model): username = models.CharField(max_length=16,unique=True) password = models.CharField(max_length=32) type = models.SmallIntegerFi…
1. 简单演示,创建一个models的数据库表 class User(models.Model): name=models.CharField(max_length=32) pwd=models.CharField(max_length=32) choice=((1,'超级用户'),(2,'普通用户'),(3,'穷逼用户')) type=models.IntegerField(choices=choice,null=True) # typ=models.ForeignKey(to='Type')…