权限源码分析,模型层choice字段,频率,过滤,排序功能

day87一.昨日回顾二.今日内容1.权限源码分析2.模型层choice字段使用(重点)代码演示models.py/urls.py/serializer.pyviews.py3.自定义频率类(分析,了解)代码演示4 内置频率类使用5 内置,第三方过滤 功能(次重点)6 排序功能(次重点)代码演示一.昨日回顾1 认证:判断用户是否登录2 登录功能:(一个达标拆成一对一的两个小表,其实叫垂直分表) -update_or_create()3 认证类 -写一个类,继承BaseAuthentication
摘要由CSDN通过智能技术生成

一.昨日回顾

1 认证:判断用户是否登录
2 登录功能:(一个达标拆成一对一的两个小表,其实叫垂直分表)
	-update_or_create()
3 认证类
	-写一个类,继承BaseAuthentication
	-重写authenticate
	-在authenticate内部做认证(request对象)
		-request中取出token
		-认证通过,返回None,或者有两个元素的元组(user,token)
		-认证失败:AuthenticationFailed
4 使用认证类
	-局部使用
		-视图类上
	-全局使用
		-配置文件中
5 配置信息的查找顺序:先从视图类中找(局部配置)--->用户项目的配置文件(全局配置)--->drf默认的配置文件(不配置)
6 认证源码分析
	-所有drf的请求,都会执行APIView的dispatch
	-Request对象中有个authenticators属性,它是我们在视图类中配置的认证类的对象,放到了列表中
	-只要通过了认证
		request.user # 就是当前登录用户,在认证类中返回的
7 权限的使用
	-写一个类,继承BasePermission
	-重写has_permission
	-在has_permission内部做权限控制(request对象)
		-request中取出token
		-认证通过,返回True
		-认证失败,返回False
8 源码分析
	-APIView的dispatch--->APIView的initial--->APIView的check_permission(request)
	for permission in self.get_permissions(): # 权限类对象放到列表中
        if not permission.has_permission(request, self):
            self.permission_denied(
                 request,
                 message=getattr(permission, 'message', None),
                 code=getattr(permission, 'code', None)
                )
9 错误信息的中文显示
	在显示类中加一个 message=字符串

二.今日内容

1.权限源码分析

8 源码分析
	-APIView的dispatch--->APIView的initial--->APIView的check_permission(request)
	for permission in self.get_permissions(): # 权限类对象放到列表中
        if not permission.has_permission(request, self):
            self.permission_denied(
                 request,
                 message=getattr(permission, 'message', None),
                 code=getattr(permission, 'code', None)
                )
9 错误信息的中文显示
	在显示类中加一个 message=字符串

2.模型层choice字段使用(重点)

1 模型表:Student表,写接口应该选择继承哪个视图类
2 推荐使用自动生成路由的方式(继承ViewSetMixin及它的子类)
3 choice的使用
	-在模型类中使用
	sex=models.SmallIntegerField(choices=(1,'男'),(2,'女'),(3,'未知')),default=1)
	-在视图类中,在序列化类中
		-get_字段名_display()的方法,该方法获得choice字段对应的数据

代码演示

models.py/urls.py/serializer.py
'''===== models.py ====='''
class Student(models.Model):
	choice_sex=((1,&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值