詳解python如何在django中為用戶模型添加自定義權(quán)限
django自帶的認(rèn)證系統(tǒng)能夠很好的實(shí)現(xiàn)如登錄、登出、創(chuàng)建用戶、創(chuàng)建超級用戶、修改密碼等復(fù)雜操作,并且實(shí)現(xiàn)了用戶組、組權(quán)限、用戶權(quán)限等復(fù)雜結(jié)構(gòu),使用自帶的認(rèn)證系統(tǒng)就能幫助我們實(shí)現(xiàn)自定義的權(quán)限系統(tǒng)達(dá)到權(quán)限控制的目的。
在django中默認(rèn)情況下,syncdb運(yùn)行時(shí)安裝了django.contrib.auth,它會為每個(gè)模型創(chuàng)建默認(rèn)權(quán)限,如foo.can_change,foo.can_delete和foo.can_add.要向模型添加自定義權(quán)限,可以添加類Meta:在模型下,并在其中定義權(quán)限,如此處所述
我的問題是,如果我要為用戶模型添加自定義權(quán)限,該怎么辦?像foo.can_view.我可以用下面的代碼片段來實(shí)現(xiàn),
ct = ContentType.objects.get(app_label='auth', model='user')
perm = Permission.objects.create(codename='can_view', name='Can View Users',
content_type=ct)
perm.save()
但是我想要一些可以很好地與syncdb一起玩的東西,例如我的自定義模型下的Meta類.我應(yīng)該在類Meta中有這些:在UserProfile下,因?yàn)檫@是擴(kuò)展用戶模型的方式.但是是否正確的方式呢?不會把它綁定到UserProfile模型?
你可以這樣做:
在Django應(yīng)用的__init__.py中添加:
from django.db.models.signals import post_syncdb from django.contrib.contenttypes.models import ContentType from django.contrib.auth import models as auth_models from django.contrib.auth.models import Permission # custom user related permissions def add_user_permissions(sender, **kwargs): ct = ContentType.objects.get(app_label='auth', model='user') perm, created = Permission.objects.get_or_create(codename='can_view', name='Can View Users', content_type=ct) post_syncdb.connect(add_user_permissions, sender=auth_models)
原文地址:http://stackoverflow.com/questions/7724265/how-to-add-custom-permission-to-the-user-model-in-django
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
PyWebIO使用初體驗(yàn)之用Python寫網(wǎng)頁
這篇文章主要介紹了PyWebIO使用初體驗(yàn)之用Python寫網(wǎng)頁的相關(guān)資料,PyWebIo是一個(gè)功能強(qiáng)大的Python第三方庫,可以使用Python語言輕松創(chuàng)建網(wǎng)頁,并且支持Flask、Django等Web框架,需要的朋友可以參考下2024-12-12
Python中根據(jù)時(shí)間自動創(chuàng)建文件夾的代碼實(shí)現(xiàn)
這篇文章主要介紹了Python中根據(jù)時(shí)間自動創(chuàng)建文件夾的代碼實(shí)現(xiàn),這樣的話給工作帶來極大的便利,方便桌面文件按時(shí)間存放,具體實(shí)例代碼跟隨小編一起看看吧2021-10-10
python+Matplotlib?繪制帶置信區(qū)間的折線圖
這篇文章主要介紹了python繪制帶置信區(qū)間的折線圖,在本文中,我們將使用?numpy?模塊生成隨機(jī)數(shù)據(jù),并使用?matplotlib?庫實(shí)現(xiàn)數(shù)據(jù)可視化,需要的朋友可以參考下2023-05-05
python數(shù)據(jù)分析之聚類分析(cluster analysis)
聚類分析本身不是一個(gè)特定的算法,而是要解決的一般任務(wù)。它可以通過各種算法來實(shí)現(xiàn),這些算法在理解群集的構(gòu)成以及如何有效地找到它們方面存在顯著差異。這篇文章主要介紹了python數(shù)據(jù)分析之聚類分析(cluster analysis),需要的朋友可以參考下2021-11-11

