保存权限表数据
在保存数据之前我们需要权限类表数据内容
1、获取权限类型列表数据
接口分析
请求方式: GET /meiduo_admin/permission/content_types/
# 获取权限类型列表数据
url(r'permission/content_types/$', permission.PermissionView.as_view({'get': 'content_types'})),
请求参数: 通过请求头传递jwt token数据。
返回数据: JSON
[
{
"id": "权限类型id",
"name": "权限类型名称"
},
...
]
返回值 | 类型 | 是否必须 | 说明 |
---|---|---|---|
Id | int | 是 | 权限类型id |
name | 数组 | 是 | 权限类型名称 |
后端实现
from django.contrib.auth.models import Permission, ContentType
from rest_framework.viewsets import ModelViewSet
from meiduo_admin.serializers.permission import PermissionSerializer, ContentTypeSerializer
from meiduo_admin.utils import UserPageNum
from rest_framework.response import Response
class PermissionView(ModelViewSet):
serializer_class = PermissionSerializer
queryset = Permission.objects.all()
pagination_class = UserPageNum
# 获取权限类型数据
def content_types(self, request):
# 查询全选分类
content = ContentType.objects.all()
# 返回结果
ser = ContentTypeSerializer(content, many=True)
return Response(ser.data)
序列化器的定义
class ContentTypeSerializer(serializers.ModelSerializer):
"""
权限类型序列化器
"""
class Meta:
model = ContentType
fields = ('id', 'name')
运行效果:
2、保存权限表数据
接口分析
请求方式:POST /meiduo_admin/permission/perms/
请求参数: 通过请求头传递jwt token数据。
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
name | str | 是 | 权限名称 |
codename | str | 是 | 权限识别名 |
content_type | str | 是 | 权限类型 |
返回数据: JSON
{
"id": "权限id",
"name": "权限名称",
"codename": "权限识别名",
"content_type": "权限类型"
}
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
id | Int | 是 | 权限id |
name | Str | 是 | 权限名称 |
codename | str | 是 | 限识别名 |
content_type | int | 是 | 权限类型 |
后端实现
# PermissionView继承的是ModelViewSet 所以保存逻辑还是使用同一个类视图
from django.contrib.auth.models import Permission, ContentType
from rest_framework.viewsets import ModelViewSet
from meiduo_admin.serializers.permission import PermissionSerializer, ContentTypeSerializer
from meiduo_admin.utils import UserPageNum
from rest_framework.response import Response
class PermissionView(ModelViewSet):
serializer_class = PermissionSerializer
queryset = Permission.objects.all()
pagination_class = UserPageNum
# 获取权限类型数据
def content_types(self, request):
# 查询全选分类
content = ContentType.objects.all()
# 返回结果
ser = ContentTypeSerializer(content, many=True)
return Response(ser.data)