日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

django自帶的權限管理Permission用法說明

瀏覽:134日期:2024-10-08 09:08:51

前言

一些公司內部的CMS系統存在某些內容讓指定的用戶有權限訪問,這時候可以用django自帶的權限管理進行限制,比較方便。

缺點:django自帶的權限是針對model(模型)的,不能針對單條數據,要針對單條數據需要額外的操作。

默認的權限(add, change, delete, view)

django針對每個模型,生成了四個默認的權限(add, change, delete, view)。例如,我有一個model叫Log,那么這四個默認權限在數據庫的存儲格式為:

表auth_permission(注:id字段的值是隨便取的,使用python manage.py migrate的時候會自動生成)

id name content_type_id codename 1 Can add log 7 add_log 2 Can change log 7 change_log 3 Can delete log 7 delete_log 4 Can view log 7 view_log

字段解釋

id:自動生成的

name: 描述權限的的內容,無太大的實際作用

content_type_id:與django_content_type中的id字段對應

codename:權限表示值,換句話說用add_log來表示用戶對Log模型有新增權限。驗證權限的時候就是驗證這個值

那如果我的模型叫Student呢,把上面表中的log替換成student就行了。

name字段中Can add xx,Can change xx等都是固定的,只有xx是根據模型來的。

同理,codename字段也是一樣,add_xxx,change_xxx。

auth_permission表中content_type_id字段還沒有解釋,先來看下面這張表:

表django_content_type

id app_label model 1 admin logentry 3 auth group 2 auth permission 4 auth user 5 contenttypes contenttype 6 sessions session 7 test log

字段解釋

id:自增字段;auth_permission表的content_type_id字段就對應這個值

app_label:屬于哪個app包,上面的Log就是test app下的模型

model:模型名字

使用方法

在函數中驗證權限,使用user.has_perm

例如:我們有一個書店,有普通員工A(model User),現在需要去出版社訂購一批書(model Book),我們判斷這個人是否有權利添加(add_book)書籍。

user = User.objects.get(username=’A’)# has_permission是一個boolean,因為Book模型是放在test app下面的has_permission = user.has_perm(’test.add_book’)

為什么驗證權限的時候前面要加app名,很好理解啊,不同app有同樣名字的權限,到底是驗證哪個呢?

驗證函數是否有執行權限,使用@permission_required

@permission_requireddef function(): pass

permission_required有三個參數:

perm,描述權限的字符串,格式為:app名.權限。如'auth.add_user',“auth.delete_user”

login_url,如果沒有權限需要跳轉的url字符串,如'/login',“https://www.baidu.com”

raise_exception,boolean值,沒有權限是否觸發PermissionDenied異常,觸發異常則直接返回,不會跳轉到login_url指向的地址

在template上使用權限驗證

第一種寫法

首先,我們需要在app的根目錄下創建一個名為templatetags的包(IDEA會自動在包下創建__init__文件),接著在包里面創建一個文件my_tags.py,在my_tags.py里面定義一個過濾器has_permission,使用這個濾器對用戶進行權限驗證,它接收兩個參數:

user,當前登錄的用戶對象

perm,需要驗證的權限字符串

from django import templateregister = template.Library()@register.filterdef has_permisstion(user, perm): if user: return user.has_perm(perm) return False

接著,我們創建一個名為index.html的模板頁面,一定要記得加載標簽文件{% load my_tags %}。

<!DOCTYPE html>{% load my_tags %}<html lang='en'><head><meta charset='UTF-8'><title>首頁</title></head><body><p>后面的內容只有有權限的人才能看到,{% if request.user|has_permisstion:’test.add_department’ %}我有權限{% endif %}</p></body></html>

目錄結構:

django自帶的權限管理Permission用法說明

演示結果,我已經登錄過了,并且有權限了:

django自帶的權限管理Permission用法說明

第二種寫法

使用模板里面的全局變量perms,例如perms.test.add_department

{% if perms.應用名.權限標識 %} <!-- 這里是有權限才顯示的內容 -->{% endif %}

自定義權限

首先,我在test app的model文件中建立了一個Department模型,然后給他增加了一個自定義權限。

class Department(models.Model): name = models.CharField(null=True, max_length=20) user = models.ManyToManyField(User) one_user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name=’one_user’) class Meta: # permissions是一個元組,記得每組權限后面加逗號,下面是一組權限 permissions = ( # (權限,權限描述), (’customize_permission’, ’This is my customize permission’), )

執行下面語句進行數據庫同步修改:

python manage.py makemigrationspython manage.py migrate

系統輸出,說明增加成功

>> Migrations for ’test’: testmigrations0003_auto_20200407_1645.py - Change Meta options on department

打開數據庫驗證,成功。

django自帶的權限管理Permission用法說明

然后,我們就能像前面一樣使用customize_permission這個權限了。

以上這篇django自帶的權限管理Permission用法說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费日韩一区二区| 丝袜美腿诱惑一区二区三区| 香蕉久久99| 精品网站aaa| 国产一区清纯| 99热精品在线| 免费在线视频一区| 捆绑调教日本一区二区三区| 久久国产三级| 国产aⅴ精品一区二区三区久久| 在线一区免费观看| 亚洲福利精品| 九九99久久精品在免费线bt| 亚洲一区二区三区高清| 亚洲欧美网站在线观看| 99亚洲视频| 国产不卡一区| 日韩理论视频| 日本一不卡视频| 久久午夜视频| 久久人人99| 亚洲精品国产嫩草在线观看 | 亚洲欧美网站| av在线日韩| 美女一区网站| 久久视频精品| 国产乱人伦丫前精品视频| 欧美日韩亚洲在线观看| 久久国产99| 日本不良网站在线观看| 男女性色大片免费观看一区二区 | 一区三区视频| 日本在线高清| 日韩av一级| 国产精品久久久久久久久久齐齐| 精品国产亚洲一区二区三区| 国产精品高潮呻吟久久久久| 日韩欧乱色一区二区三区在线| 午夜精品影视国产一区在线麻豆| 日本h片久久| 国产精品伦理久久久久久| 午夜久久久久| 国产欧美日韩一区二区三区四区| 欧美日本不卡高清| 精品精品国产三级a∨在线| 久久精品99国产精品日本| 国产日韩一区二区三区在线| 日韩激情网站| 男女男精品视频网| 91麻豆精品激情在线观看最新| www.com.cn成人| 91精品国产经典在线观看| 日韩电影免费网站| 久久精品国产一区二区| 日韩动漫一区| 亚洲天堂免费| 免费人成在线不卡| 日韩福利视频网| 亚洲精品自拍| 日本不卡高清视频| 91免费精品国偷自产在线在线| 国产日产一区| 亚洲精品九九| 人人精品亚洲| 国产日韩欧美一区| 久久精品在线| 亚洲精选久久| 7777精品| 国产一在线精品一区在线观看| 色综合视频一区二区三区日韩 | 在线中文字幕播放| 国产精品一线| 久久国产免费看| 美女av在线免费看| 亚洲精品在线影院| 99视频一区| 国产精品毛片在线看| 日日夜夜免费精品| 欧美经典一区| 中文在线一区| 国产精品欧美一区二区三区不卡| 日韩国产高清在线| 在线国产精品一区| 日韩国产一区二区三区| 国产激情欧美| 久久久久网站| 国产精品极品| 老牛影视一区二区三区| 福利一区二区免费视频| 免费不卡在线观看| 久久蜜桃资源一区二区老牛| 久久的色偷偷| 亚洲1区在线| 亚洲高清不卡| 麻豆国产精品一区二区三区 | 午夜久久影院| 国产精品亚洲四区在线观看| 欧美亚洲日本精品| 国产精品毛片视频| 国产黄大片在线观看| 欧美午夜不卡影院在线观看完整版免费| 六月婷婷一区| 国产精品88久久久久久| 精品国产a一区二区三区v免费| 日韩综合一区二区| 亚洲精品伦理| 亚洲三级在线| 亚洲精品系列| 91欧美极品| 国产欧美三级| 免费观看日韩电影| 亚洲精品系列| 中文字幕一区二区精品区| 一区二区三区网站| 亚洲综合色婷婷在线观看| 亚洲二区视频| 日韩欧美少妇| 亚洲一区av| 国产欧美日韩亚洲一区二区三区| 在线观看免费一区二区| 国产aa精品| 国产精品mm| 国产日韩三级| 亚洲精品进入| 综合国产精品| 免费高潮视频95在线观看网站| 久久久天天操| 久久精品九色| 精品欧美日韩精品| 色综合视频一区二区三区日韩 | 红杏一区二区三区| 一区二区三区国产在线| 久久黄色影院| 日韩网站中文字幕| 欧美久久天堂| 欧美日韩尤物久久| 日韩在线视频精品| 久久最新视频| 中日韩男男gay无套| 999久久久91| 久久久国产精品一区二区中文| 欧美一级全黄| 日本不卡在线视频| 国产精品伦一区二区| 中文字幕av一区二区三区人 | 久久精品xxxxx| 亚洲欧美久久精品| 欧美亚洲一级| 午夜电影一区| 国产一区二区三区91| 欧美日韩免费观看视频| aa国产精品| 日本不卡高清| 99视频精品| 国产日产精品一区二区三区四区的观看方式| 国产精品麻豆成人av电影艾秋| 麻豆精品久久久| 亚洲婷婷免费| 国产色99精品9i| 三级欧美在线一区| 国产精品一区三区在线观看| 国产乱码精品一区二区三区四区| 六月丁香综合在线视频| 日韩午夜免费| 国产美女高潮在线观看| 国产一级久久| 丰满少妇一区| 国产亚洲在线观看| 麻豆国产精品| 在线精品亚洲| 日韩在线视频精品| 欧美精品一区二区久久| 激情欧美丁香| 久久美女精品| 亚洲欧美日韩国产一区| 国产模特精品视频久久久久| 日韩国产在线观看| 日韩超碰人人爽人人做人人添| 精品久久福利| 一区二区亚洲精品| 一区二区高清| 久久一区欧美| 久久视频国产| 国产精品亚洲综合在线观看| 91亚洲人成网污www| 国产精品主播| 91九色综合| 国产调教精品| 国产91久久精品一区二区| 国产午夜久久av| 青青伊人久久| 欧美一区=区三区| 亚洲一区二区小说| 亚洲午夜电影| 国产精品嫩模av在线| 国产情侣一区| 激情欧美国产欧美| 久久精品理论片| 日韩精品电影一区亚洲| 久久99伊人|