1.modelviewset 认证、权限、限流、序列化、分页、过滤、排序

modelviewset的应用场景是:

1.主要应用于数据接口

2.对数据库的增删改查

3.在视图函数中没有很多业务逻辑需要来处理的

modelviewser从一定程度上来说是继承了APIView

APIview的应用场景是:

2.支付宝登录,三方登录,七牛云上传

DRF八大核心:
1.权限(用户登录校验用户名密码或者token是否合法)
2.认证 (根据不同的用户角色,可以操作不同的表)
3.版本 (接口版本号,用 v1/v2/v3)
api.example.com/v1/login # 只有用户名密码登录
api.example.com/v2/login # 手机号,微信 登录
4.分页
5.序列化 (返回json)
6.限流 (限制接口访问速度)
7.过滤 (username=zhangsan)
8.排序 (ordering=-id``` 继承modelviewset
#class UserViewSet(viewsets.ModelViewSet):
# """ 完成产品的增删改查 """
# queryset = User.objects.all()
# serializer_class = UserSerializer
# 优先使用 get_serializer_class 返回的序列化 器
# 1.认证:自定义认证类, 自定义会覆盖全局配置
# authentication_classes = (BasicAuthentication, SessionAuthentication)
# 2.权限:自定义权限类
# permission_classes = (MyPermission,)
# 3.分页:自定义分页器 覆盖全局配置
pagination_class = PageNum
# 4.限流:自定义限流类
throttle_classes = [UserRateThrottle]
# 5.过滤:指定过滤方法类, 排序方法类, 一个或多个
filter_backends = (DjangoFilterBackend, OrderingFilter) # 同时支持过滤和排序
# 5.1指定排序字段, 不设置, 排序功能不起效
ordering_fields = ('date_joined', 'id') # ?ordering=-id
# 5.2指定过滤字段, 不设置, 过滤功能不起效
filter_fields = ('username', 'phone', 'is_active') # ? username=tom&phone=&is_active=true # 根据不同的请求, 获得不同的序列化器
def get_serializer_class(self):
if self.action == 'unactived':
return UserUnActiveSerializer
else:
return UserSerializer
`

最新文章

  1. 清空Fragment回退栈中某个Fragment
  2. centos下python中添加easygui模块
  3. Birt使用总结
  4. javascript模块化应用
  5. C 的 一些写法格式 交流
  6. update更新两个字段
  7. html样式表极大地提高了工作效率
  8. jQuery绑定事件-多种方式实现
  9. drupal7为admin/config页面添加自己开发的模块
  10. Chapter 1 First Sight——8
  11. js中点与方括号及for...in
  12. 比sort()性能更好的原生js代码实现数组从小到大排序
  13. 关于Box Anemometer的安装配置遇到的几个坑
  14. Java多线程编程模式实战指南之Promise模式
  15. C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
  16. Android 之 沉浸式状态栏及顶部状态栏背景色设置
  17. [从jQuery看JavaScript]-匿名函数与闭包
  18. MSSQL中通过关键字查找所有存储过程
  19. Fragment 创建 传递参数 跳转【典例】
  20. centos 中输入ifconfig 只有lo 没有eth0

热门文章

  1. Linux和MySQL的安装与基本操作
  2. C语言经典100例-ex001
  3. Polyglot Translators: Let's do i18n easier! 一款国际化插件小助手!
  4. Mybatis的基础配置
  5. ES6--正则表达式
  6. 通过Portwigge的Web安全漏洞训练平台,学习SSRF
  7. C# 时间格式处理
  8. wcf调用时时间参数问题,返回值中有日期格式得值得问题
  9. C++如何实现多态
  10. 手把手教你5分钟从零开发一款简易的IDEA插件!项目经验/毕设不愁了!