[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.\u4e1a\u52a1\u53d1\u5c55")

上面這種,需要先用b = list(User.objects.get(username='賬號').get_all_permissions())查看權限的中文對應pyhton中顯示的代碼

具體制作過程,將在后續的文章中慢慢展開,為了給大家還原一個開發權限系統的真是過程,而不是只貼一大代碼上來(ps:自己以前就是這樣的)......

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM