管理表页面的创建
Posted shaozheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了管理表页面的创建相关的知识,希望对你有一定的参考价值。
管理表页面的创建
drf 三大认证:
共有 认证组件、权限组件、频率组件 三大认证组件:
只有认证通过才能访问到指定的url地址,比如增删改查的操作
django的auth模块有六张表:
用户表,分组表,权限表,用户分组表,分组权限表,用户权限表
1. 认证组件
就是身份认证,校验用户:游客、合法用户、非法用户
1. 游客:代表校验通过,直接进入下一步校验(权限校验) 2. 合法用户:代表校验通过,将用户存储在request.user中,再进入下一步校验(权限校验) 3. 非法用户:代表校验失败,抛出异常,返回403权限异常结果 4. 只要通过认证不管是游客还是登录用户,request.user都有值
2. 权限组件
校验用户权限:必须是已登录的
1. 针对所有用户——》校验用户的读写权限 。如:游客只读,正规用户可读可写 2. 认证通过:可以进入下一步校验(频率认证) 3. 认证失败:抛出异常,返回403权限异常结果
3. 频率组件
限制视图接口在一定的时间内被访问的频率次数
1. 限制的条件(IP、id、唯一键)、频率周期时间(s、m、h)、频率的次数(3/s)
1. 没有达到限次:正常访问接口
2. 达到限次:限制时间内不能访问,限制时间达到后,可以重新访问
定置管理页面:
# admin.py--->管理员管理页面
from django.contrib import admin
from . import models
from django.contrib.auth.admin import UserAdmin as AuthUserAdmin
class UserAdmin(AuthUserAdmin):
# 添加用户页面可控制字段
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'password1', 'password2', 'is_staff', 'mobile'),
}),
)
# 用户列表展示页面显示字段
list_display = ('username', 'email', 'mobile', 'is_staff')
# 注册自定义User表,用admin管理,配置UserAdmin,定制化管理页面
admin.site.register(models.User, UserAdmin)
用户权限关系:
#models.py
from django.contrib.auth.models import User
# 自定义User表
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
mobile = models.CharField(max_length=11, verbose_name='电话号码', unique=True)
class Meta:
db_table = 'old_boy_user'
verbose_name_plural = '用户表'
def __str__(self):
return self.username
#settings.oy
# 自定义User表配置
AUTH_USER_MODEL = 'api.User'
表:User、Group、Permission、UG关系表、UP关系表、GP关系表
传统的RBAC有两种:权限三表:
User、Group、Permission
权限五表:
没有UP关系表
Django中Auth组件采用的是 权限六表(在传统RBAC基础上增加UP关系表)
基于Auth的权限管理认证模块(Thinkphp)(了解)
注意: 用户管理表,一定要在第一次数据库迁移时完成
自定义routers 模块:
from rest_framework.routers import Route, DynamicRoute, SimpleRouter as DRFSimpleRouter
class SimpleRouter(DRFSimpleRouter):
routes = [
# List route. /资源s/
Route(
url=r'^{prefix}{trailing_slash}$',
mapping={
'get': 'list', # 群查
'post': 'create', # 单增、群增
'put': 'multiple_update', # 群整改
'patch': 'multiple_partial_update', # 群局改
'delete': 'multiple_destroy', # 群删
},
name='{basename}-list',
detail=False,
initkwargs={'suffix': 'List'}
),
# Dynamically generated list routes. Generated using
# @action(detail=False) decorator on methods of the viewset.
DynamicRoute(
url=r'^{prefix}/{url_path}{trailing_slash}$',
name='{basename}-{url_name}',
detail=False,
initkwargs={}
),
# Detail route. /资源s/(pk)/
Route(
url=r'^{prefix}/{lookup}{trailing_slash}$',
mapping={
'get': 'retrieve', # 单查
'put': 'update', # 单整改
'patch': 'partial_update', # 单局改
'delete': 'destroy' # 单删
},
name='{basename}-detail',
detail=True,
initkwargs={'suffix': 'Instance'}
),
# Dynamically generated detail routes. Generated using
# @action(detail=True) decorator on methods of the viewset.
DynamicRoute(
url=r'^{prefix}/{lookup}/{url_path}{trailing_slash}$',
name='{basename}-{url_name}',
detail=True,
initkwargs={}
),
]
# 对外提供router对象
router = SimpleRouter()
# eg: router.register('users', UserModelViewSet, basename='user')
以上是关于管理表页面的创建的主要内容,如果未能解决你的问题,请参考以下文章
使用 NodeJS 和 JSDOM/jQuery 从代码片段构建 PHP 页面