5:Django-DRF-权限

权限

好比如普通用户和会员的区别,会员可以访问更多的内容,因为会员的权限是比普通用户的多

登录成功以后,超级用户可以做什么事,普通用户可以做什么事

超级用户可以查看某些接口,普通用户不能查看等

一、表模型

from django.db import models
from django.contrib.auth.models import AbstractUser  # django的用户表

class User(models.Model):
    username = models.CharField(max_length=16)
    password = models.CharField(max_length=16)
    user_type = models.IntegerField(choices=((1, '超级用户'), (2, '普通用户')))

二、自定义权限类

自定义一个类,并继承BasePermission

重写has_permission方法

在方法内些权限认证条件

# 自定义权限
from rest_framework.permissions import BasePermission  # 权限
from rest_framework.exceptions import AuthenticationFailed  # 错误信息

class SuperPermission(BasePermission):  # 自定义权限类需要继承BasePermission
	
    def has_permission(self, request, view):  # 重写has_permission方法,在方法内写限制条件
        print(request.user)
        if request.user.user_type == 1:   # 权限条件
            return True   #  权限通过返回True
        else:
            return False  # 否则返回false

三、使用

局部

# 查询所有数据
class BookView(APIView):
    authentication_classes = [Auth_login.authlogin, ]  # 局部启用认证功能
    permission_classes = [Auth_login.SuperPermission,]  # 局部启用权限功能

    def get(self,request):
        return Response('获取数据成功')

全局

在settings.py文件配置

REST_FRAMEWORK = {
        "DEFAULT_PERMISSION_CLASSES": ["app01.Auth_login.SuperPermission", ]
        }

局部禁用

在想禁用的视图类上

    permission_classes = []
posted @ 2021-06-17 15:37  IT小码农!!!!  阅读(82)  评论(0)    收藏  举报