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

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

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

瀏覽:138日期: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久久,三上悠亚国产精品一区二区三区
亚洲一区资源| 欧美~级网站不卡| 国产精品资源| 亚洲男女av一区二区| 欧美日韩调教| 亚洲一区二区三区无吗| 日韩国产一区| 欧美在线资源| 国产欧美一区二区三区国产幕精品| 日韩中文字幕一区二区三区| 日韩二区三区在线观看| 日韩福利一区| 蜜桃视频免费观看一区| 日本a级不卡| 亚洲福利免费| 97久久超碰| 国产色综合网| 欧美丰满日韩| 超碰99在线| 欧美日韩在线精品一区二区三区激情综合 | 国产精品99免费看| 国产免费成人| 99久久夜色精品国产亚洲1000部| 久久不射网站| 黄色不卡一区| 91精品一区二区三区综合在线爱| 日韩中文av| 综合亚洲自拍| 国产亚洲在线| 国产一区二区中文| 欧美综合另类| 狠狠色狠狠色综合日日tαg| 99精品网站| 日韩欧美中文| 日韩视频网站在线观看| 亚洲少妇在线| 久久激情综合网| 中文字幕在线视频久| 黄色成人91| 日本在线不卡视频一二三区| 国产精品一区二区美女视频免费看 | 欧美精品1区| 2023国产精品久久久精品双| 激情欧美一区二区三区| 精品久久中文| 视频一区欧美日韩| 国产一区观看| 久久亚洲国产精品尤物| 亚洲影院天堂中文av色| 精品精品99| 日韩精品免费一区二区夜夜嗨| 久久久人人人| 精品国产欧美| 亚洲欧美日本日韩| 午夜欧美在线| 成人精品亚洲| 超级白嫩亚洲国产第一| 国产欧美一级| 欧美精品自拍| 精品一区91| 精品视频99| 日韩在线观看中文字幕| 亚洲在线免费| 老司机免费视频一区二区| 日韩精品高清不卡| 欧美日韩亚洲在线观看| 日韩欧美二区| 三上亚洲一区二区| 精品一区二区三区在线观看视频| 亚洲乱码视频| 合欧美一区二区三区| aⅴ色国产欧美| 欧美日韩在线观看视频小说| 欧美一级全黄| 国产精品xxx在线观看| 国产日韩三级| 国产精品videossex| 欧美一级网址| 久久久免费人体| 国产精品亚洲人成在99www| 国精品产品一区| 日本一区二区免费高清| 蜜桃91丨九色丨蝌蚪91桃色| 日韩一区精品字幕| 国户精品久久久久久久久久久不卡| 久久电影tv| 中国女人久久久| 日韩在线麻豆| 国产精品99久久免费| 久久精品日韩欧美| 久久av综合| 久久国产直播| 国产欧美精品| 久久久久免费| 国产精品扒开腿做爽爽爽软件| 在线一区视频观看| 婷婷精品在线| 日韩一级欧洲| 丁香六月综合| 极品日韩av| 精品视频高潮| 午夜电影一区| 中文在线а√天堂 | 香蕉精品999视频一区二区| 欧美日韩一区二区三区四区在线观看 | 女人av一区| 欧美日韩一二三四| 亚洲欧洲日韩精品在线| 国产不卡一区| 激情婷婷久久| 精品精品国产三级a∨在线| 久久美女性网| 国产欧美日韩| 在线亚洲成人| 人在线成免费视频| 97精品在线| 国产一卡不卡| 日韩不卡免费视频| 亚洲综合日本| 玖玖玖国产精品| 成人在线丰满少妇av| 日本综合精品一区| 免费久久久久久久久| 欧洲激情综合| 免费久久精品| 在线人成日本视频| 国产精品免费大片| 日韩精品久久久久久久软件91| 你懂的亚洲视频| 国产精品一级在线观看| 亚洲一级在线| 午夜在线视频观看日韩17c| 午夜精品免费| 人人香蕉久久| 国产精品4hu.www| 日本成人一区二区| 视频在线观看一区二区三区| 国产精品日韩| 91久久精品无嫩草影院| 麻豆成人综合网| 午夜国产精品视频| 天堂成人国产精品一区| 日韩欧美中文字幕一区二区三区 | 快she精品国产999| 国产黄大片在线观看| 国产传媒在线| 99精品视频在线| 日本大胆欧美人术艺术动态| 另类亚洲自拍| 日韩精品成人| 999久久久精品国产| 久久国产亚洲| 视频一区二区不卡| 国产精品videossex久久发布| 激情欧美一区二区三区| 国产中文字幕一区二区三区| 国产精品**亚洲精品| 亚洲免费毛片| 不卡一二三区| 国产日韩欧美一区| 国产综合视频| 精品精品国产三级a∨在线| 蜜臀av亚洲一区中文字幕| 久久精品国产精品亚洲毛片| 亚洲国内欧美| 激情中国色综合| 亚洲深夜av| 蜜臀国产一区| 欧美亚洲网站| 日本电影久久久| 91精品91| 欧美久久久网站| 伊人久久视频| 国产精品啊v在线| 99国产精品视频免费观看一公开| 国产精品黄色片| 青青国产91久久久久久| 国产精品美女| 国产伊人精品| 亚洲精品黄色| 日韩福利视频导航| 中文字幕人成乱码在线观看 | 国产精品久久久久久久久妇女| 激情综合网址| 国产亚洲第一伦理第一区| 91精品二区| 精品成人免费一区二区在线播放| 91精品美女| 亚洲精品美女| 综合日韩在线| 久热综合在线亚洲精品| 久久视频国产| 欧美日韩亚洲一区三区| 美美哒免费高清在线观看视频一区二区| 日本午夜大片a在线观看| 蜜桃一区二区三区在线观看| 久热综合在线亚洲精品| 美女精品在线观看| 亚洲丝袜啪啪| 中文字幕乱码亚洲无线精品一区|