24_rest-framework权限组件
2018-12-13 本文已影响0人
knot98
rest-framework权限组件
一、权限简介
只用超级用户才能访问指定的数据,普通用户不能访问,所以就要有权限组件对其限制
二、简单使用
自定义权限类:
from rest_framework.permissions import BasePermission
class UserPermission(BasePermission):
message = ''
def has_permission(self, request, view):
user_type = request.user.user_type
user_type_name = request.user.get_user_type_display()
self.message = '您当前权限为 [' + user_type_name + '] 不能执行该操作!'
if user_type == 2:
return True
else:
return False
models.py:
class UserInfo(models.Model):
nid = models.AutoField(primary_key=True)
username = models.CharField(max_length=32)
password = models.CharField(max_length=64)
user_choice = ((0, '普通用户'), (1, '会员'), (2, '超级会员'))
user_type = models.IntegerField(choices=user_choice, default=0)
全局使用settings.py文件配置:
# 设置为全局使用
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': ['app01.custom.MyPermissions.UserPermission', ]
}
局部使用:
class Book(APIView):
# 在想要使用的视图类内加入:MyPermissions.UserPermission为导入的自定义权限类
permission_classes = [MyPermissions.UserPermission, ]
def get(self, request):
book_list = models.Book.objects.all()
book_ser = MySerializers.BookSerializers(book_list, many=True)
return JsonResponse(book_ser.data, safe=False)