本系列前三章:

http://www.cnblogs.com/CQ-LQJ/p/5604331.htmlPermission权限基本操作指令

http://www.cnblogs.com/CQ-LQJ/p/5609690.htmlUser权限基本操作指令

http://www.cnblogs.com/CQ-LQJ/p/5620490.html设计自有权限管理系统设计思路

正文:

权限管理界面分三部分:一个点击进入该页面的按钮、以及该页面的权限列表、添加按钮,删除按钮;

权限管理界面页面是最基础的设计,并且和用户权限分配界面有着重要的关系.

首先需要在template,简称模板中加入一个点击按钮,功能是进入权限管理页面,代码如下:

 <p class="text-center"><button id="qxgl" class="btn">权限管理</button></p>

该按钮的功能大致为:

利用ajax局部刷新出权限管理界面网页,且使用ajax中getJSON函数从后端view中返回所有权限信息(codename为中文的权限)以及相关添加删除按钮.

HTML页面编写javascript之前,先将必要的HTML标签写好,我们这里需要一个表格(table)和表单(form),如下:

<form>
{% csrf_token %}
<div id="interface"></div>
<table class="table" id="t1">
<caption></caption>
<thead></thead>
<tbody></tbody>
<tfoot></tfoot>
</table>
</form>

接下来我们看按钮函数如何编写:

      $('#qxgl').click(function(){//权限管理
$("#interface").html("<h3>权限管理操作界面</h3>"+
"<p class='text-error'><strong>你可以选择对应权限, <button class='btn btn-small btn-danger' type='button' id='perm_del'>点击此处</button>进行删除,也可以点击左侧权限管理按钮刷新权限页面!</strong></p>")
$("#t1 thead").html("<tr style='background-color:#C0C0C0;'><th>单选框</th><th>权限类型</th><th>权限名称</th><th>权限描述</th></tr>");
$.getJSON("{% url 'permmanage' %}",
function(ret){
$('#t1 tbody').empty();$('#t1 tfoot').empty();
for (var i = 0; i <= ret.length - 1; i++) {
$('#t1 tbody').append("<tr><td><input type='radio' name='permission' value='"+ret[i].codename+"'></td>"+
"<td>"+ret[i].content_type_id+"</td><td>"+ret[i].codename+"</td>"+
"<td>"+ret[i].name+"</td></tr>");
}
$('#t1 tfoot').append("<tr><td>"+
"<button class='btn btn-small btn-success' type='button' id='perm_add'>新增权限</button>"+
"</td>"+
"<td><input type='text' class='input-mini' placeholder='.input-mini' id='id'></td>"+
"<td><input type='text' class='input-medium' placeholder='.input-medium' id='codename'></td>"+
"<td><input type='text' class='input-xxlarge' placeholder='.input-xxlarge' id='name'></td>"+
"</tr>");
});
})

上面代码中$.getJSON的功能是从后台返回所有中文权限的json参数到前台,另外到这里我们需要知道两件事情:
第一:django的permisson有三个字段,分别对应content_type_id 权限类型,codename 权限名称,name 权限描述,permission的用法跟普通的模型使用一样

第二:查询中文权限需要用到正则表达式,需要用到模型api中的iregex,查询全部中文权限代码:

Permission.objects.filter(codename__iregex=u'[\u4e00-\u9fa5]').values()

好了,到这里我们跳到django后端配置url和view便可实现该按钮功能:
配置url:

home_patterns = [
url(r'permmanage/$', 'home.views.permmanage', name='permmanage'),
] urlpatterns = [
url(r'^$', 'login.views.login_view', name='login_view'),
# url(r'^blog/', include('blog.urls')),
url(r'^home/', include(home_patterns)),
url(r'^admin/', include(admin.site.urls)),
]

配置view:

def permmanage(request):    #正则匹配中文u'[\u4e00-\u9fa5]'
d = Permission.objects.filter(codename__iregex=u'[\u4e00-\u9fa5]').values()
dlist = []
for i in d:
dlist.append(i)
return JsonResponse(dlist, safe=False)

下面编写对应的权限添加和删除操作,这里我便不详细说明了,具体可查看本系列文章中Permission权限基本操作指令

具体代码如下

view.py:

#权限添加
def permaddtion(request):
content_type_id = request.POST['id']
codename = request.POST['codename']
name = request.POST['name']
if Permission.objects.filter(codename = codename).exists():
relist = {'re':'该权限已存在,添加失败!'}
return JsonResponse(relist)
else:
Permission.objects.create(content_type_id=int(content_type_id),codename=codename,name=name)
relist = {'re':'该权限添加成功!'}
return JsonResponse(relist)
#权限删除
def permdeletion(request):
codename = request.POST['codename']
Permission.objects.get(codename=codename).delete()
relist = {'re':"该权限删除成功!"}
return JsonResponse(relist)

url.py:

#首页url配置
home_patterns = [
url(r'permaddtion/$', 'home.views.permaddtion', name='permaddtion'),
url(r'permdeletion/$', 'home.views.permdeletion', name='permdeletion'),
]

template:

      $('#t1').on("click","#perm_add",function(){//添加权限
var tj1 = $("#id").val(); var tj2 = $("#codename").val(); var tj3 = $("#name").val();
var pattern = /^[\u4E00-\u9FA5]{1,10}$/;
if( tj1== ""){alert("权限类型必填!");}
else{
if(isNaN(tj1)){alert("权限类型必须为数字!");}//数字判断
else{
if(tj2 == ""){alert("权限名称必填!");}
else{
if(!pattern.test(tj2)){alert("权限名称必须为中文!");}//中文判断
else{
if( tj3 == ""){alert("权限内容必填!");}
else{//条件判断完毕,进行后台操作
$.post("{% url 'permaddtion' %}",//是,则进行下一步操作
{
csrfmiddlewaretoken:"{{ csrf_token }}",
id:tj1,
codename:tj2,
name:tj3,
},
function(ret) {
alert(ret['re']);
});
}}}}}
})
$('#interface').on("click","#perm_del",function(){//删除权限
var re = $("input[name='permission']:checked").val();//获取权限名称
var pattern = /^[\u4E00-\u9FA5]{1,10}$/;
if (!pattern.test(re)){alert("请选择一个权限名称,再进行删除权限操作!");}//判断是否选择单选框
else{
$.post("{% url 'permdeletion' %}",//是,则进行下一步操作
{
csrfmiddlewaretoken:"{{ csrf_token }}",
codename:re,
},
function(ret) {
alert(ret['re']);
});
}
})

[Django]用户权限学习系列之权限管理界面实现的更多相关文章

  1. Django用户登陆以及跳转后台管理页面3

    Django用户登陆以及跳转后台管理页面1http://www.cnblogs.com/ujq3/p/7891774.html Django用户登陆以及跳转后台管理页面2http://www.cnbl ...

  2. Django用户登陆以及跳转后台管理页面2

    请先写好以下,再来替换文件 Django用户登陆以及跳转后台管理页面1http://www.cnblogs.com/ujq3/p/7891774.html from django.shortcuts ...

  3. Spring5.0源码学习系列之事务管理概述

    Spring5.0源码学习系列之事务管理概述(十一),在学习事务管理的源码之前,需要对事务的基本理论比较熟悉,所以本章节会对事务管理的基本理论进行描述 1.什么是事务? 事务就是一组原子性的SQL操作 ...

  4. .net reactor 学习系列(二)---.net reactor界面各功能说明

    原文:.net reactor 学习系列(二)---.net reactor界面各功能说明         安装了.net reactor之后,可以在安装目录下找到帮助文档REACTOR_HELP.c ...

  5. Android学习系列(23)--App主界面实现

    在上篇文章<Android学习系列(22)--App主界面比较>中我们浅略的分析了几个主界面布局,选了一个最大众化的经典布局.今天我们就这个经典布局,用代码具体的实现它. 1.预览图先看下 ...

  6. [Django]用户权限学习系列之设计自有权限管理系统设计思路

    若在阅读本片文章遇到权限操作问题,请查看本系列的前两章! http://www.cnblogs.com/CQ-LQJ/p/5609690.html和http://www.cnblogs.com/CQ- ...

  7. [Django]用户权限学习系列之User权限基本操作指令

    针对Django 后台自带的用户管理系统,虽说感觉还可以,但是为了方便用户一些操作,特别设计自定义的用户权限管理系统. 在制作权限页面前,首先需要了解权限和用户配置权限的指令,上章讲到权限的添加,删除 ...

  8. [Django]用户权限学习系列之Permission权限基本操作指令

    若需建立py文件进行测试,则在文件开始加入以下代码即可 #coding:utf-8 import os os.environ.setdefault("DJANGO_SETTINGS_MODU ...

  9. 「Django」rest_framework学习系列-权限认证

    权限认证:1.项目下utils文件写permissions.py文件 from rest_framework.permissions import BasePermission class SVIPP ...

随机推荐

  1. 简单粗暴地理解js原型链--js面向对象编程

    原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢在网上找点原型链和闭包的文章看,效果极好. 不要纠结于那一堆术语了,那除了让你脑筋拧成麻花,真的不能帮你什么.简单粗暴点看原型链吧, ...

  2. app开发外包注意事项,2017最新资讯

    我们见过很多创业者,栽在这app外包上.很多创业者对于app外包这件事情不是特别重视,以为将事情交给app外包公司就完事了,实际上不是的.无论是从选择app外包公司还是签订合同.售后维护等各方面都有许 ...

  3. JS里面Data日期格式转换

    var format = function(time, format){     var t = new Date(time);     var tf = function(i){return (i  ...

  4. 实例操作JSONP原理

    絮语:按这个步骤走,你就会明白JSONP是什么鬼. 1.工程目录: ng-mywork demo.html test.js 2.nginx的server配置 server { listen ; ser ...

  5. 旺财速啃H5框架之Bootstrap(一)

    接下来的时间里,我将和大家一起对当前非常流行的前端框架Bootstrap进行速度的学习,以案例的形式.对刚开始想学习Bootstrap的同学而找不着边的就很有帮助了.如果你想详细的学习Bootstra ...

  6. 9、 Struts2验证(声明式验证、自定义验证器)

    1. 什么是Struts2 验证器 一个健壮的 web 应用程序必须确保用户输入是合法.有效的. Struts2 的输入验证 基于 XWork Validation Framework 的声明式验证: ...

  7. IIC驱动移植在linux3.14.78上的实现和在linux2.6.29上实现对比(deep dive)

    首先说明下为什么写这篇文章,网上有许多博客也是介绍I2C驱动在linux上移植的实现,但是笔者认为他们相当一部分没有分清所写的驱动时的驱动模型,是基于device tree, 还是基于传统的Platf ...

  8. 用MongoDB分析合肥餐饮业

    看了<从数据角度解析福州美食>后难免心痒,动了要分析合肥餐饮业的念头,因此特地写了Node.js爬虫爬取了合肥的大众点评数据.分析数据库我并没有采用MySQL而是用的MongoDB,是因为 ...

  9. 一些关于Linux入侵应急响应的碎碎念

    近半年做了很多应急响应项目,针对黑客入侵.但疲于没有时间来总结一些常用的东西,寄希望用这篇博文分享一些安全工程师在处理应急响应时常见的套路,因为方面众多可能有些杂碎. 个人认为入侵响应的核心无外乎四个 ...

  10. Android中访问sdcard路径的几种方式

    以前的Android(4.1之前的版本)中,SDcard路径通过"/sdcard"或者"/mnt/sdcard"来表示,而在JellyBean(安卓4.1)系统 ...