为了与stark组件分离,形成独立的模块,所以rbac数据表的操作需要单独进行操作,对角色表的操作。

urls.py

urlpatterns = [
re_path(r'^roles/list/$', RoleView.as_view(),name='roles_list'),
re_path(r'^roles/add/$', RoleAddView.as_view(), name='roles_add'),
re_path(r'^roles/edit/(?P<rid>\d+)/$', RoleEditView.as_view(), name='roles_edit'),
re_path(r'^roles/dell/(?P<rid>\d+)/$', RoleDelView.as_view(), name='roles_del'),
]

views.py

from django.shortcuts import render,redirect,HttpResponse
from django.views import View
from rbac.models import *
from rbac.forms.roles import RoleModelForm
from django.urls import reverse # Create your views here. class RoleView(View):
def get(self,request):
role_queryset=Role.objects.all()
return render(request,'rbac/role_list.html',{'role_queryset':role_queryset}) class RoleAddView(View):
def get(self,request):
form = RoleModelForm()
return render(request,'rbac/role_add.html',{'form':form}) def post(self,request):
form=RoleModelForm(data=request.POST)
if form.is_valid():
form.save()
return redirect(reverse('rbac:roles_list'))
return render(request,'rbac/role_add.html',{'form':form}) class RoleEditView(View): def get(self,request,rid):
role_obj=Role.objects.filter(id=rid).first()
if not role_obj:
return HttpResponse('该角色不存在')
form=RoleModelForm(instance=role_obj)
return render(request,'rbac/role_edit.html',{'form':form}) def post(self,request,rid):
role_obj=Role.objects.filter(id=rid).first()
form=RoleModelForm(data=request.POST,instance=role_obj)
if form.is_valid():
form.save()
return redirect(reverse('rbac:roles_list'))
return render(request, 'rbac/role_edit.html', {'form': form}) class RoleDelView(View): def get(self,request,rid):
Role.objects.filter(id=rid).first().delete()
return redirect(reverse('rbac:roles_list'))

role_list.html

{% extends 'layout.html' %}
{% block css %} {% endblock %}
{% block content %}
<div class="role_list">
<div class="container">
<a href="{% url 'rbac:roles_add' %}" class="btn btn-primary add_role">添加角色</a>
<table class="table table-hover table-bordered">
<thead>
<tr>
<td>角色ID</td>
<td>角色名称</td>
<td>权限个数</td>
<td>操作</td>
</tr>
</thead>
<tbody>
{% for row in role_queryset %}
<tr>
<td>{{ row.id }}</td>
<td>{{ row.title }}</td>
<td>{{ row.permissions.count }}</td>
<td>
<a href="{% url 'rbac:roles_edit' rid=row.id %}"><i class="fa fa-pencil" aria-hidden="true"></i></a>
<span style="padding: 2px 2px;display: inline-block">|</span>
<a href="{% url 'rbac:roles_del' rid=row.id %}"><i class="fa fa-trash" aria-hidden="true"></i></a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %}

role_add.html

{% extends 'layout.html' %}

{% block content %}
<div style="margin-top: 20px">
<form method="post" class="form-horizontal" novalidate>
{% csrf_token %}
{% for field in form %}
<div class="row">
<div class="form-group">
<label class="col-sm-2 control-label">{{ field.label }}</label>
<div class="col-sm-6">
{{ field }}<span style="color: red;display: inline-block">{{ field.errors.0 }}</span>
</div>
</div>
</div>
{% endfor %}
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div>
</form>
</div>
{% endblock %}

role_edit.html

{% extends 'layout.html' %}

{% block content %}
<div style="margin-top: 20px">
<form method="post" class="form-horizontal" novalidate>
{% csrf_token %}
<div class="row">
<div class="form-group">
<label class="col-sm-2 control-label">角色名称</label>
<div class="col-sm-6">
{{ form.title }}<span style="color: red;display: inline-block">{{ form.title.errors.0 }}</span>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary">提交</button>
</div>
</div> </form>
</div>
{% endblock %}

操作页面

rbac组件之角色操作(二)的更多相关文章

  1. rbac组件之权限操作(四)

    对于权限表的操作有两种方式,第一种是一个个的权限进行curd,另外一种是批量操作,自动发现django程序中的路由,进行批量curd,首先介绍第一种方式. 因为在列出菜单时,已经将权限列表列出来了,所 ...

  2. rbac组件之菜单操作(三)

    菜单包括菜单列表,菜单列表不仅将菜单列出来,而且将每个菜单下的权限也列出来.菜单的添加.删除.修改. urls.py ... re_path(r'^menus/list/$', MenuView.as ...

  3. DocX开源WORD操作组件的学习系列二

    DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...

  4. day72 关于rbac组件的小部分面试题

    rbac的权限组件   基于角色的权限控制 1.什么是权限? url代表的就是一个权限 2.如何实现权限的控制? 表结构  以我们讲的课的内容为例 菜单表: - title 标题 - icon 图标 ...

  5. python 全栈开发,Day108(客户管理之权限控制,客户管理之动态"一级"菜单,其他应用使用rbac组件,django static文件的引入方式)

    一.客户管理之权限控制 昨天的作业,有很多不完善的地方 下载代码,基本实现权限验证 https://github.com/987334176/luffy_permission/archive/v1.2 ...

  6. RBAC (基于角色的访问控制)

    基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注.在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而 ...

  7. rbac组件

    创建新项目 新建一个项目untitled,注意django 版本为1.11 修改models.py,增加2个表 from django.db import models class Classes(m ...

  8. CRM rbac 组件的应用

    1 拷贝 rbac 组件到项目中,注册这个app 2 数据库迁移 1 删除rbac下migrations里除了init外的文件 2 修改用户表 class User(models.Model): &q ...

  9. 应用rbac组件 动态生成一级菜单

    动态生成一级菜单 改表结构 需要知道是否是菜单\icon\名称权限表 +字段: is_menu = models.BooleanField(max_length=32,verbose_name='是否 ...

随机推荐

  1. 洛谷 P2824 [HEOI2016/TJOI2016]排序 (线段树合并)

    (另外:题解中有一种思路很高妙而且看上去可以适用一些其他情况的离线方法) 线段树合并&复杂度的简单说明:https://blog.csdn.net/zawedx/article/details ...

  2. L - Prime Number(求n内质数的个数)

    Description Write a program which reads an integer n and prints the number of prime numbers which ar ...

  3. strings命令的实现 2014-06-02 00:17 355人阅读 评论(0) 收藏

    本程序实现从文件中提取连续4个以上的可打印字符.模仿linux中string命令 #include <stdio.h> #include<stdlib.h> #include ...

  4. 202 Happy Number 快乐数

    写一个算法来判断一个数是不是“快乐数”.一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,或是无限循环但始终变不到 1.如 ...

  5. 转】用Hadoop构建电影推荐系统

    原博文出自于: http://blog.fens.me/hadoop-mapreduce-recommend/ 感谢! 用Hadoop构建电影推荐系统 Hadoop家族系列文章,主要介绍Hadoop家 ...

  6. Android开发学习——高德地图的实现

    1.首先做好下边的准备: 1.1  http://lbs.amap.com/   注册账号 1.2  下载 定位sdk 和 地图sdk 下载后是这样的 1.3  对下载的进行解压 将他们加入 中,对每 ...

  7. PHP使用Session遇到的一个Permission denied Notice解决办法

    搜索 session.save_path 在这里你有两个选择,一个是像我一样用; 把这一行注释掉,另一个选择就是修改一个 nobody 用户可以操作的目录,也就是说有读写权限的目录,我也查了下这个默认 ...

  8. 用vue写的移动端车牌号输入法

    效果图: (录制了视频演示,然而不会上传.....心塞.....) 本页面所在项目已上传GitHub,github下载地址:https://github.com/dan-Zd/car-vueapp  ...

  9. 微信小程序组件解读和分析:六、progress进度条

    progress进度条组件说明: 进度条,就是表示事情当前完成到什么地步了,可以让用户视觉上感知事情的执行.progress进度条是微信小程序的组件,和HTML5的进度条progress类似. pro ...

  10. jvm 脑图