zoukankan      html  css  js  c++  java
  • [Django]用户权限学习系列之设计自有权限管理系统设计思路

    若在阅读本片文章遇到权限操作问题,请查看本系列的前两章!

    http://www.cnblogs.com/CQ-LQJ/p/5609690.htmlhttp://www.cnblogs.com/CQ-LQJ/p/5604331.html

    现在步入正题,这篇文章是关于自有权限管理系统设计的思路描述,自有权限管理系统是抛弃django自带的后台管理界面,基于自己编写的权限管理界面对用户权限的管理!

    首先上图:(自己设计的权限系统界面,代码将后续文章中写出)

    权限管理界面主要是添加和删除权限,查看官方文档可知道permission有三个字段,content_type_id(权限类型),codename(权限名称),name(权限描述)

    查看上图,可知权限名称显示的中文,django后台自带的是英文,如下图:

    当然其中的中文是我自己添加进去的,采用中文的好处还有一个,就是可以通过后台利用正则表达式筛选出只是中文的权限,这样就可以不用显示出英文的权限导致用户看不懂了,中文的正则是[u4e00-u9fa5].

    后台view查询中文权限代码如下:

    #匹配中文权限(单个查询)
    c = Permission.objects.get(codename__iregex=u'[u4e00-u9fa5]')
    print c
    #匹配中文权限(全部查询)
    Permission.objects.filter(codename__iregex=u'[u4e00-u9fa5]').values()

    用户管理界面是添加用户和对用户进行权限分配操作,如下图:

    或许有人会问道,用户权限配置好后,如何实现对一个网页或者操作的权限控制呢?

    其实代码和django官网中差不多,在模板中检验权限代码如下:

     {% if perms.auth.业务发展 %}
     <p class="text-center"><a href="{% url 'keywork' %}">业务发展</a></p>
     {% else %}
    <p class="text-center"><a href="javascript:alert('无权限,请联系管理员!')">业务发展</a></p>
    
    {% endif %}

    view中检验权限如下


    u = User.objects.get(username='账号') u.has_perm(u"auth.u4e1au52a1u53d1u5c55")

    上面这种,需要先用b = list(User.objects.get(username='账号').get_all_permissions())查看权限的中文对应pyhton中显示的代码

    具体制作过程,将在后续的文章中慢慢展开,为了给大家还原一个开发权限系统的真是过程,而不是只贴一大代码上来(ps:自己以前就是这样的)......

  • 相关阅读:
    搭建博客
    开发常用的工具函数
    堆内存和栈内存及C++内存分配
    nuxt本机运行,如何用ip访问,localhost也可以访问?
    vue封装一个左滑删除的组件
    vue封装一个swiper组件
    YAPI安装google的cross-request插件
    vue项目中如何封装api,使请求方法清晰,适合协作开发
    axios封装一个请求本地数据的方法
    nuxt中vuex如何模块化分
  • 原文地址:https://www.cnblogs.com/CQ-LQJ/p/5620490.html
Copyright © 2011-2022 走看看