詳解python如何在django中為用戶模型添加自定義權(quán)限
django自帶的認(rèn)證系統(tǒng)能夠很好的實(shí)現(xiàn)如登錄、登出、創(chuàng)建用戶、創(chuàng)建超級(jí)用戶、修改密碼等復(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,它會(huì)為每個(gè)模型創(chuàng)建默認(rèn)權(quán)限,如foo.can_change,foo.can_delete和foo.can_add.要向模型添加自定義權(quán)限,可以添加類Meta:在模型下,并在其中定義權(quán)限,如此處所述
我的問(wèn)題是,如果我要為用戶模型添加自定義權(quán)限,該怎么辦?像foo.can_view.我可以用下面的代碼片段來(lái)實(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ò)展用戶模型的方式.但是是否正確的方式呢?不會(huì)把它綁定到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
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python如何實(shí)現(xiàn)的簡(jiǎn)單購(gòu)物車程序
這篇文章主要介紹了Python如何實(shí)現(xiàn)的簡(jiǎn)單購(gòu)物車程序,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-05-05使用簡(jiǎn)單工廠模式來(lái)進(jìn)行Python的設(shè)計(jì)模式編程
這篇文章主要介紹了使用簡(jiǎn)單工廠模式來(lái)進(jìn)行Python的設(shè)計(jì)模式編程的方法,需要的朋友可以參考下2016-03-03Python os.listdir與os.walk實(shí)現(xiàn)獲取路徑詳解
這篇文章主要介紹了Python使用os.listdir和os.walk獲取文件路徑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-10-10Python實(shí)現(xiàn)刪除當(dāng)前目錄下除當(dāng)前腳本以外的文件和文件夾實(shí)例
這篇文章主要介紹了Python實(shí)現(xiàn)刪除當(dāng)前目錄下除當(dāng)前腳本以外的文件和文件夾的方法,涉及Python針對(duì)目錄及文件的刪除技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07Python Web框架之Django框架cookie和session用法分析
這篇文章主要介紹了Python Web框架之Django框架cookie和session用法,結(jié)合實(shí)例形式分析了Django框架cookie和session的常見(jiàn)使用技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-08-08python logging 日志輪轉(zhuǎn)文件不刪除問(wèn)題的解決方法
最近在維護(hù)項(xiàng)目的python項(xiàng)目代碼,項(xiàng)目使用了 python 的日志模塊 logging, 設(shè)定了保存的日志數(shù)目, 不過(guò)沒(méi)有生效,還要通過(guò)contab定時(shí)清理數(shù)據(jù)2016-08-08selenium+python自動(dòng)化測(cè)試環(huán)境搭建步驟
在本文中小編給大家分享了關(guān)于selenium+python自動(dòng)化測(cè)試環(huán)境搭建的相關(guān)步驟以及知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考學(xué)習(xí)下。2019-06-06