drf的组件和解析器
drf的序列化组件:
1. 用途: 把python中的对象,转成json格式字符串
2. 使用步骤1: 写一个类继承Serializer或者ModelSerializer
举例(类中选取字段进行序列化):
class BookSerializer(serializers.Serializer):
id = serializers.CharField()
title = serializers.CharField()
price = serializers.CharField()
举例(把类中字段全部进行序列化):
class TestSer(serializers.ModelSerializer):
class Meta:
model = models.Takes
fields = '__all__'
3. 使用步骤2(setting的配置):
book_ser=BookSerializer(queryset对象/单个对象,many=True/False)
book_ser.data 序列化完成的字典
4.总结:
1 变量名和source指定的值不能一样
2 source='publish.name'还支持继续 .
3 source 还支持方法(没用)
4 支持写方法,如下
方法一定传一个参数,是当前book对象
publish_dic=serializers.SerializerMethodField()
def get_publish_dic(self,obj):
return
结果:{'id':obj.publish.pk,'name':obj.publish.name}
drf的认真组件:
1.认证组件的好处:
比如要访问books/路径,必须登录之后才能访问。一旦登录成功,在响应结果中写一个随机字符串。
举例:{ status:100
msg:登录成功
token:sdafsdfasd
}
只要用了drf,post提交数据,就不需要csrf验证了
2.使用步骤1:写一个类,继承BaseAuthentication
3.使用步骤2:def authenticate(self,request) ,记住传request对象
4.在视图类中使用:(不要加括号):
1.局部使用:authentication_classes=[AuthLogin](写在views中)
2.全局使用:-REST_FRAMEWORK={"DEFAULT_AUTHENTICATION_CLASSES":["app01.auth.AuthLogin",]}(在setting中配置)
3.全局使用的局部禁用:authentication_classes = [](写在views中)
5.补充:
-drf内置了一些认证类(了解):
-TokenAuthentication
-SessionAuthentication
drf的权限组件:
1.使用步骤1:写一个类,继承BasePermission
2.使用步骤2:def has_permission(self, request, view): ,记住传request对象和view
3.在视图类中使用:(不要加括号):
1.局部使用:permission_classes=[MyPer](写在views中)
2.全局使用:-REST_FRAMEWORK={"DEFAULT_PERMISSION_CLASSES":['app01.auth.MyPer']}(在setting中配置)
3.全局使用的局部禁用:permission_classes = [](写在views中)
drf的频率组件:
1.使用步骤1:写一个类,继承SimpleRateThrottle
2.使用步骤2:def get_cache_key(self, request, view):,记住传request对象和view
3.使用步骤3:'DEFAULT_THROTTLE_RATES': {
这个key跟scope对应,value值3/m 3/h 4/d
'xx': '3/m'
}(在setting中配置)
4.在视图类中使用:(不要加括号):
1.局部使用:throttle_classes = [VisitThrottle](写在views中)
2.全局使用:REST_FRAMEWORK={"DEFAULT_THROTTLE_CLASSES":["app01.auth.VisitThrottle"]}(在setting中配置)
3.全局使用的局部禁用:throttle_classes = [](写在views中)
drf的解析器:
1.局部使用:parser_classes=[JSONParser,](写在views中)
2.全局使用:'DEFAULT_PARSER_CLASSES':['rest_framework.parsers.JSONParser'](在setting中配置)
响应器(一般用默认就可以了):
1.局部使用:renderer_classes=[JSONRenderer,](写在views中)
2.全局使用:'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
)(在setting中配置)
drf的组件和解析器的更多相关文章
- DRF 的 版本,解析器,与序列化
DRF 的 版本,解析器,与序列化 补充 配置文件中的 类的调用: (字符串) v1 = ["view.xx.apth.Role","view.xx.apth.Role& ...
- Restful API学习Day5 - DRF之限制 分页 解析器和渲染器
参考文档: Django REST framework基础:认证.权限.限制 Django REST framework基础:分页 Django REST framework基础:解析器和渲染器 一. ...
- $Django Rest Framework-频率组件,解析器
1 频率组件 #自定义组件写频率认证(重点继承BaseThrottle) from rest_framework.throttling import BaseThrottle import time ...
- Django day28 频率组件,解析器
一:频率组件: 1.频率是什么? 节流,访问控制 2. (1)内置的访问频率控制类SimpleRateThrottle (2)写一个类,继承SimpleRateThrottle class MyThr ...
- rest-framework组件 之 解析器
解析器 request类 django的request类和rest-framework的request类的源码解析 局部视图 from rest_framework.parsers import JS ...
- DRF路由组件和渲染器组件
参考博客:https://www.cnblogs.com/wupeiqi/articles/7805382.html
- DRF 解析器组件
Django无法处理application/json协议请求的数据,即,如果用户通过application/json协议发送请求数据到达Django服务器,我们通过request.POST获取到的是一 ...
- DRF之频率限制、分页、解析器和渲染器
一.频率限制 1.频率限制是做什么的 开放平台的API接口调用需要限制其频率,以节约服务器资源和避免恶意的频繁调用. 2.频率组件原理 DRF中的频率控制基本原理是基于访问次数和时间的,当然我们可以通 ...
- DjangoRestFramework 学习之restful规范 APIview 解析器组件 Postman等
DjangoRestFramework学习一之restful规范.APIview.解析器组件.Postman等 本节目录 一 预备知识 二 restful规范 三 DRF的APIView和解析器组件 ...
随机推荐
- tomcat启动闪退问题
tomcat的bin->setclasspath.bat文件中 将两个set加上,并且将if not “%JAVA_HOME%”放到%JRE_HOME%上面.
- 关于decode("utf-8")出现编码错的提示
data = data.decode("utf-8") 出现错误时候可以加上第二个参数 如下; data = data.decode("utf-8",&quo ...
- 委托&&异步
private void ShowMessage(string message) { this.BeginInvoke(new MethodInvoker(delegate { txtSysMessa ...
- (转载)C#关于DateTime得到的当前时间的格式和用法
今天看到工程里有关DateTime的有关知识,之前了解一些用法,比如怎么获取年月日,当前系统时间等等,但是,感觉还是有好多不知道,于是上网搜罗了一下,找到很多有关知识,现在与大家分享下: Date ...
- 将nginx添加至service服务
一.问题描述: 无法用service命令启动nginx 二.问题分析: /etc/init.d/目录下缺少nginx默认启动脚本 三.问题解决: 在/etc/init.d/路径下添加脚本文件,名称为n ...
- U3D外包公司—北京动点(公司性质)承接U3D、Kinect、VR虚拟现实,增强现实,体感互动,大屏互动等各类外包
unity3d外包就找动点软件承接虚拟现实项目外包 承接U3D.Kinect.VR虚拟现实,增强现实,体感互动,大屏互动等各类外包 联系请加QQ:372900288 联系电话:13911652504 ...
- 绑定方法与非绑定方法 classmethod和staticmethod
一:绑定方法:特点:绑定给谁就应该是由谁来调用,谁来调用就会将谁当做第一个参数传入 1:绑定给对象的方法:类中定义的函数默认就是绑定给对象的 例: 2:绑定给类的方法:为类中定义的函数加 ...
- js 可以表示的最大值
, ); ; ; for (var i = START; i <= END; i++) { count++; } console.log(count); // A. 0 // B. 100 // ...
- WPF InkCanvas 书写毛笔效果
https://www.cnblogs.com/younShieh/p/10602787.html
- java对redis的基本操作,ZZ
java对redis的基本操作 http://www.cnblogs.com/edisonfeng/p/3571870.html