权限组件(6):权限分配的角色管理
效果图:
# 'rbac.middlewares.rbac.RbacMiddleware'
layout.html
{# {% multi_menu request %} #} {# {% breadcrumb request %} #}
一、路由分发
在主目录的urls.py下给rbac做分发
from django.urls import path, re_path, include urlpatterns = [# rbacre_path(r'^rbac/', include(('rbac.urls', 'rbac'))) ]
给rbac下的urls.py里配置路由
from django.urls import re_pathfrom rbac.views import roleurlpatterns = [re_path(r'^role/list/$', role.role_list, name='role_list'),re_path(r'^role/add/$', role.role_add, name='role_add'),re_path(r'^role/edit/(?P<pk>\d+)/$', role.role_edit, name='role_edit'),re_path(r'^role/del/(?P<pk>\d+)/$', role.role_del, name='role_del'),]
二、增加form表单验证
rbac/forms/base.py
from django import formsclass BaseBootStrapForm(forms.ModelForm):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)for name, field in self.fields.items():field.widget.attrs['class'] = 'form-control'
rbac/forms/role.py
from django import formsfrom rbac import models from rbac.forms.base import BaseBootStrapFormclass RoleModelForm(BaseBootStrapForm):class Meta:model = models.Rolefields = ['title', ]
三、在视图函数写增删改查的功能
rbac/views/role.py
""" 角色管理 """from django.shortcuts import HttpResponse, render, redirect, reversefrom rbac import models from rbac.forms.roles import RoleModelFormdef role_list(request):"""角色列表:param request::return:"""role_queryset = models.Role.objects.all()return render(request, 'rbac/role_list.html', {'role_list': role_queryset})def role_add(request):"""添加角色:param request::return:"""if request.method == 'GET':forms = RoleModelForm()return render(request, 'rbac/change.html', {'forms': forms})forms = RoleModelForm(data=request.POST)if forms.is_valid():forms.save()return redirect(reverse('rbac:role_list'))return render(request, 'rbac/change.html', {'forms': forms})def role_edit(request, pk):"""编辑角色:param request::param pk: 要修改的角色id:return:"""role_obj = models.Role.objects.filter(id=pk).first()if not role_obj:return HttpResponse('角色不存在')if request.method == 'GET':forms = RoleModelForm(instance=role_obj)return render(request, 'rbac/change.html', {'forms': forms})forms = RoleModelForm(data=request.POST, instance=role_obj)if forms.is_valid():forms.save()return redirect(reverse('rbac:role_list'))return render(request, 'rbac/change.html', {'forms': forms})def role_del(request, pk):"""删除角色:param request::param pk::return:"""role_list_url = reverse('rbac:role_list')if request.method == 'GET':return render(request, 'rbac/delete.html', {'cancel': role_list_url})models.Role.objects.filter(id=pk).delete()return redirect(role_list_url)
增加和编辑可以用一个页面。删除页面给其他表做增删改查的时候也可以用,所以这里要给页面传一个固定参数cancel,以后其他表也要传这个参数。
四、渲染到模板
rbac/templates/role_list.html
{% extends 'layout.html' %}{% block content %}<h1>角色列表</h1><div class="luffy-container"><div class="btn-group" style="margin:5px 0"><a class="btn btn-default" href="{% url 'rbac:role_add' %}"><i class="fa fa-plus-square" aria-hidden="true"></i>添加角色</a></div><table class="table table-hover table-striped"><thead><tr><th>id</th><th>名称</th><th>选项</th></tr></thead><tbody>{% for role in role_list %}<tr><td>{{ role.id }}</td><td>{{ role.title }}</td><td><a style="color: #333333; font-size:18px" href="{% url 'rbac:role_edit' pk=role.id %}"><i class="fa fa-edit" aria-hidden="true"></i></a><a style="color: red; font-size:18px" href="{% url 'rbac:role_del' pk=role.id %}"><i class="fa fa-trash-o" aria-hidden="true"></i></a></td></tr>{% endfor %}</tbody></table></div> {% endblock content %}
rbac/templates/change.html
{% extends 'layout.html' %}{% block content %}<div class="luffy-container"><form action="" method="post" novalidate>{% csrf_token %}{% for field in form %}<div class="form-group"><label for="{{ field.auto_id }}">{{ field.label }}</label>{{ field }}<span style="color:red;">{{ field.errors.0 }}</span></div>{% endfor %}<span style="color:red;">{{ errors }}</span><input type="submit" value="提交" class="btn btn-primary"></form></div>{% endblock content %}
rbac/templates/delete.html
{% extends 'layout.html' %}{% block content %}<div class="luffy-container"><div class="alert alert-danger" role="alert"><form action="" method="post" novalidate>{% csrf_token %}<p style="font-size: 13px;"><i class="fa fa-warning" aria-hidden="true"></i>删除后将不可恢复,请确认是否删除</p><div style="margin-top: 20px"><a href="{{ cancel }}" class="btn btn-default btn-sm">取消</a><input type="submit" value="确认" class="btn btn-danger btn-sm"/></div></form></div></div> {% endblock content %}
转载于:https://www.cnblogs.com/lshedward/p/10501937.html
权限组件(6):权限分配的角色管理相关推荐
- CRM 开发 - 权限组件/stark组件/CRM业务
CRM开发(系列) - 武沛齐 - 博客园CRM,客户关系管理系统(Customer Relationship Management).企业用CRM技术来管理与客户之间的关系,以求提升企业成功的管理方 ...
- SpringBoot整合SpringSecurity实现权限控制(五):用户管理
系列文章目录 <SpringBoot整合SpringSecurity实现权限控制(一):实现原理> <SpringBoot整合SpringSecurity实现权限控制(二):权限数据 ...
- 基于SCVMM对虚拟化服务器与虚拟机管理权限分配用户角色
基于SCVMM对虚拟化服务器与虚拟机管理权限 分配用户角色 随着云计算时代的来临,越来越多的企业已经将IT环境迁移到虚拟化环境中,那么企业如何来统一管理如此多的虚拟化主机与虚拟机,通过管理平台是否能实 ...
- 怎么实现角色权限的分配_Choerodon猪齿鱼实践之角色管理
角色管理是一个平台或系统中重要的基础功能,其中角色是一组特定权限的集合,而管理员可通过给成员分配角色来赋予成员相应的权限.这是角色在各个平台中的基本用法. 考虑到平台的业务层级与结构,Choerodo ...
- 08-HR-权限管理模块(给员工分配角色,权限点管理页面开发,给角色分配权限,前端权限-页面访问权(路由),前端权限-按钮操作权)
权限管理模块 RBAC的权限设计思想 采用方案: RBAC的权限模型,RBAC(Role-Based Access control) ,也就是基于角色的权限分配解决方案 权限控制目标:不同的用户登录系 ...
- Oracle数据库的认证方法、用户管理、权限管理和角色管理等
1 Oracle认证方法 操作系统身份认证 网络身份认证 Oracle数据库身份认证 数据库管理员认证 操作系统认证方式 如果采用操作系统认证方式,通常需要在操作系统中创建用户组,并且授予该组DBA权 ...
- 权限角色管理模块_界面
在开发很多项目的时候,都会用到用户权限管理,我也在很多项目里做过权限控制,所以,我也总结出一套条理清晰的角色权限控制体系.并且完善,减少模块的耦合度,做成一个独立的模块,用在很多项目里. 先来看看管理 ...
- 权限分配 html,如何为LightSwitch HTML移动客户端分配用户角色和权限
如何为LightSwitch HTML移动客户端分配用户角色和权限 07/08/2013 6 minutes to read In this article [原文发表时间] 2013-06-25 0 ...
- 项目实战之旅游网(五)后台角色管理(下) 后台权限管理
目录 一.后台角色管理(下) 1.查询角色权限 2.修改角色权限 3.优化侧边栏菜单 二.后台权限管理 1.权限列表 2.新增权限 3.修改权限 4.删除权限 一.后台角色管理(下) 1.查询角色权限 ...
最新文章
- 最大公约数 最小公倍数
- Java 消息机制之回调详解
- Android input keyevent
- 网站如何进行渠道跟踪_网站如何进行搜索引擎优化?
- matlab+text+extent,MATLAB字体及特殊符号标示方法
- python高级编程总结
- java dao修改语句_一个通用的DAO模型实现增删改查
- ES6学习之 -- Set数据结构
- 深度学习-Pytorch:Pytorch 创建CNN神经网络模型【ResNet模型】
- Sendmail和Openwebmail构建Linux下的Emai服务器
- 曲苑杂坛--即时文件初始化特性
- linux编译libmp3lame,使用libmp3lame库编码mp3
- Excel 各种密码的破解,大全建议收藏!
- 乖乖小网安-网络安全之ARP初探
- html5 video 不拉伸,HTML 5视频拉伸
- Harmonious
- OSChina 周日乱弹 —— 你撞鬼了吗?
- xmanager连接linux端口,怎么使用xmanager连接linux
- 用AI从零开始创建一个宫崎骏的世界
- Codeforces Round #777 (Div. 2)(A~C)
热门文章
- BugkuCTF-WEB题速度要快
- centos6 mysql 启动_【17-02-18】 【求助】centos6 mysql重启后无法正常启动
- bool类型数组转换成一个整数_Go 学习笔记 02 | 基本数据类型以及 byte 和 rune 类型...
- java性能优化方案_Java性能优化要点
- all方法 手写promise_promise.all的实现
- 开发缺点_开发移动端手机APP有哪些优缺点?
- python django restful框架_Django RESTful API 实例带你快速上手开发
- crtsiii型无砟轨道板_无砟轨道裂缝破损怎么修补
- 特殊教育学校计算机教学计划,2021年特殊教育学校教学计划
- android 5.0 sd卡读写,如何使用为Android 5.0(Lollipop)提供的新SD卡存取API?