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和解析器组件 ...
随机推荐
- 知识点补充 set 深浅拷贝
一 对前面知识点的补充 1.str中的join()方法是将列表转换成字符串 lst = ["韩雪","赵丽颖","黄渤","李连杰 ...
- Porsche Piwis Tester II V14.000 with CF30 Laptop at autonumen.com
Porsche piwis tester ii is the latest professional tester for Porshe,the most poweful diagnose and o ...
- daily start
2019/4/26 1. to summerize the merge experience, about makefile, about compile error analysis. 2. loo ...
- SSM项目思路整合NEW
#首先进行项目思路整体分析,具体包括哪些模块,如何实现等: 一)搭建环境 1.导包: (Spring核心包4个 + 面向切面的包4个 + SpringJDBC和事务的包各一个, SpringMVC两个 ...
- Docker Overlay 介绍
Overlay Network Overlay Network:属于Docker网络驱动,基于VXLAN封装实现Docker原生Overlay网络. Overlay Network:覆盖网络,在基础网 ...
- 剑指offer(50)数组中重复的数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
- Python实战:网络爬虫都能干什么?
整站下载器:siteSucker https://blog.csdn.net/l_215851356/article/details/54377582 http://python.jobbole.co ...
- CF285E Positions in Permutations
思路 dp+二项式反演的神题 就是dp部分非常麻烦(好吧是我傻了 考虑先钦定m个满足条件的位置,这m个\(x_i\),只能放\(x_i-1\)或\(x_i+1\),然后其他的随便放(得出至少m个的方案 ...
- POJ1141 Brackets Sequence---区间DP+输出路径
题目意思就是输入一串括号,让你找到最小的补偿数目使括号串合法,并且输出补全后的串. 基本是区间DP的模板题,该题特别让你输出补全后的答案.这和区间dp的反向思路很像,就是把一个大的区间划分为多个互不干 ...
- .NET Core 如何上传文件及处理大文件上传
当你使用IFormFile接口来上传文件的时候,一定要注意,IFormFile会将一个Http请求中的所有文件都读取到服务器内存后,才会触发ASP.NET Core MVC的Controller中的A ...