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:自己以前就是这样的)......

  • 相关阅读:
    LeetCode 326. Power of Three
    LeetCode 324. Wiggle Sort II
    LeetCode 322. Coin Change
    LeetCode 321. Create Maximum Number
    LeetCode 319. Bulb Switcher
    LeetCode 318. Maximum Product of Word Lengths
    LeetCode 310. Minimum Height Trees (DFS)
    个人站点大开发!--起始篇
    LeetCode 313. Super Ugly Number
    LeetCode 309. Best Time to Buy and Sell Stock with Cooldown (DP)
  • 原文地址:https://www.cnblogs.com/CQ-LQJ/p/5620490.html
Copyright © 2011-2022 走看看