成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Django權(quán)限使用總結(jié)

JellyBool / 2819人閱讀

摘要:權(quán)限的定義可以使用多種方式進(jìn)行定義在中定義我們可以在的中對(duì)進(jìn)行定義。官網(wǎng)示例如下權(quán)限的校驗(yàn)在中校驗(yàn)權(quán)限利用校驗(yàn)官網(wǎng)示例如下注意除了用指定單個(gè)權(quán)限之外,還支持以及用于多個(gè)權(quán)限。實(shí)際上在當(dāng)中對(duì)于的使用提供了兩個(gè)的功能,一個(gè)是另一個(gè)是。

概述

Django自帶有用戶驗(yàn)證系統(tǒng),它可以處理User、Group、permission以及基于用戶cookie的session。這個(gè)文檔是基于Django官網(wǎng)文檔的介紹,以及其他的資料整理而來。主要的內(nèi)容介紹了Django的用戶驗(yàn)證系統(tǒng)的基本工作原理,并且也會(huì)對(duì)于如何為你的項(xiàng)目定制用戶驗(yàn)證做出簡單介紹。

Permission在Django中的工作原理

首先,我們需要定義permission對(duì)象,而這個(gè)對(duì)象在定義的時(shí)候是需要與對(duì)應(yīng)的model綁定的。
然后,定義好的permission就可以賦予給user或者group對(duì)象,實(shí)現(xiàn)permission與用戶的綁定。
最后,在view以及template中可以通過API對(duì)于user或者group進(jìn)行權(quán)限的校驗(yàn)了。

權(quán)限的定義

permission可以使用多種方式進(jìn)行定義:

在model中定義

我們可以在model的Meta中對(duì)permission進(jìn)行定義。
官網(wǎng)示例如下:

多帶帶定義

或者可以在獨(dú)立于model之外的位置定義。
官網(wǎng)示例如下:

不綁定特定的model定義

以上的兩個(gè)例子都是需要我們已經(jīng)具有model的情況下才能定義permission,如果我們還沒有model的情況下,又想要定義permission的話,應(yīng)該怎么處理呢?雖然這個(gè)需求有點(diǎn)奇怪
引用至GoogleGroup一個(gè)不存在的頁面:

url_content_type = ContentType.objects.create(
    name="url permission", app_label="crashstats", model="unused")

can_view_url = Permission.objects.create(
    name="can view url", content_type=url_content_type,
    codename="can_view_url")

user = User.objects.get(username="example_user", is_superuser=False)
user.user_permissions.add(can_view_url)

這樣通過綁定到一個(gè)不存在的model來實(shí)現(xiàn)也是支持的。實(shí)際使用中發(fā)現(xiàn)在定義ContentType的時(shí)候,給model賦值空字符串也是可行的,但是None則不行。

一個(gè)更為通用的解決方案

這樣就會(huì)得到我們所定義的permission對(duì)象了。而且Django會(huì)為每個(gè)permission賦予一個(gè)全局唯一的code,規(guī)則:.。通過這個(gè)code就可以指定相應(yīng)的permission

權(quán)限的授予

權(quán)限的授予可以通過user或者group來進(jìn)行。
user通過user_permissions屬性設(shè)置permission,group通過permissions屬性設(shè)置permission。

官網(wǎng)示例如下:

權(quán)限的校驗(yàn) 在view中校驗(yàn)權(quán)限 利用decorator校驗(yàn)

官網(wǎng)示例如下:

注意:permissions除了用string指定單個(gè)權(quán)限之外,還支持list以及tuple用于多個(gè)權(quán)限。

利用Mixin校驗(yàn)

官網(wǎng)示例如下:

在template中校驗(yàn)權(quán)限

如果在Django的settings里面設(shè)置了django.contrib.auth.context_processors.auth,以及啟用了RequestContext的話,那Django就會(huì)默認(rèn)在template中傳遞兩個(gè)變量:

{{ user }}

{{ perms }}

其中的{{ perms }}變量就可以實(shí)現(xiàn)在template使用permission,從而達(dá)到通過不同的permission提供不同的template的功能。

實(shí)際上Django在template當(dāng)中對(duì)于permission的使用提供了兩個(gè)API的功能,一個(gè)是User.has_module_perms;另一個(gè)是User.has_perm。
當(dāng)你在template中使用{{ perms.foo }}的時(shí)候就會(huì)調(diào)用User.has_module_perms方法,如果用戶具有foo這個(gè)permission的話,這個(gè)值就會(huì)為True。
當(dāng)你在template中使用{{ perms.foo.can_vote }}的時(shí)候就會(huì)調(diào)用User.has_perm方法,如果用戶具有foo.can_vote這個(gè)permission的話,這個(gè)值就會(huì)為True。

permission在template中的使用示例:


參考文檔

官網(wǎng)認(rèn)證系統(tǒng)文檔
官網(wǎng)ContentType文檔
官網(wǎng)自定義校驗(yàn)文檔

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/38205.html

相關(guān)文章

  • 關(guān)于WEB前后端分離的要點(diǎn)總結(jié)(上)

    摘要:前言對(duì)于前后端分離大家可能在網(wǎng)上可以找到很多的文章。但是,我們今天分享的文章的英文我們的老師對(duì)于前后端的分離問題的多年工作經(jīng)驗(yàn)的總結(jié)。今天,我們把這些經(jīng)驗(yàn)總結(jié)知識(shí)點(diǎn)分享給大家,希望可以幫助到大家。添加開啟黑白名單,任選其一。 前言 對(duì)于前后端分離大家可能在網(wǎng)上可以找到很多的文章。但是,我們今天分享的文章的英文我們的老師對(duì)于前后端的分離問題的多年工作經(jīng)驗(yàn)的總結(jié)。今天,我們把這些經(jīng)驗(yàn)總結(jié)知...

    FullStackDeveloper 評(píng)論0 收藏0
  • 解決Python虛擬環(huán)境virtualenv下不能使用sudo提升權(quán)限問題

    摘要:解決虛擬環(huán)境下不能使用提升權(quán)限問題問題描述在虛擬環(huán)境下,執(zhí)行某些命令需要有提升權(quán)限,會(huì)導(dǎo)致該條命令退出虛擬環(huán)境如啟動(dòng)服務(wù),需要監(jiān)聽端口此時(shí)會(huì)提示權(quán)限不足,無法訪問端口。  解決Python虛擬環(huán)境下不能使用sudo提升權(quán)限問題 問題描述 在虛擬環(huán)境下,執(zhí)行某些命令需要有sudo提升權(quán)限,會(huì)導(dǎo)致該條命令退出虛擬環(huán)境: 如啟動(dòng)django 服務(wù),需要監(jiān)聽80端口: $: python ma...

    Lucky_Boy 評(píng)論0 收藏0
  • Django REST FrameWork中文教程4:驗(yàn)證和權(quán)限

    摘要:未經(jīng)身份驗(yàn)證的請求應(yīng)具有完全只讀訪問權(quán)限。其中一個(gè)字段將用于表示創(chuàng)建代碼段的用戶。唯一的限制是所包含的必須使用命名空間。中文教程序列化中文教程請求和響應(yīng)中文教程基于類的視圖中文教程驗(yàn)證和權(quán)限中文教程關(guān)系和超鏈接中文教程中文教程模式和客戶端庫 目前,我們的API對(duì)誰可以編輯或刪除代碼段沒有任何限制。我們想要一些更高級(jí)的行為,以確保: 代碼段始終與創(chuàng)建者相關(guān)聯(lián)。 只有身份驗(yàn)證的用戶可以創(chuàng)建...

    luodongseu 評(píng)論0 收藏0
  • Django REST FrameWork中文教程4:驗(yàn)證和權(quán)限

    摘要:未經(jīng)身份驗(yàn)證的請求應(yīng)具有完全只讀訪問權(quán)限。其中一個(gè)字段將用于表示創(chuàng)建代碼段的用戶。唯一的限制是所包含的必須使用命名空間。中文教程序列化中文教程請求和響應(yīng)中文教程基于類的視圖中文教程驗(yàn)證和權(quán)限中文教程關(guān)系和超鏈接中文教程中文教程模式和客戶端庫 目前,我們的API對(duì)誰可以編輯或刪除代碼段沒有任何限制。我們想要一些更高級(jí)的行為,以確保: 代碼段始終與創(chuàng)建者相關(guān)聯(lián)。 只有身份驗(yàn)證的用戶可以創(chuàng)建...

    _ang 評(píng)論0 收藏0
  • Django REST FrameWork中文教程4:驗(yàn)證和權(quán)限

    摘要:未經(jīng)身份驗(yàn)證的請求應(yīng)具有完全只讀訪問權(quán)限。其中一個(gè)字段將用于表示創(chuàng)建代碼段的用戶。唯一的限制是所包含的必須使用命名空間。中文教程序列化中文教程請求和響應(yīng)中文教程基于類的視圖中文教程驗(yàn)證和權(quán)限中文教程關(guān)系和超鏈接中文教程中文教程模式和客戶端庫 目前,我們的API對(duì)誰可以編輯或刪除代碼段沒有任何限制。我們想要一些更高級(jí)的行為,以確保: 代碼段始終與創(chuàng)建者相關(guān)聯(lián)。 只有身份驗(yàn)證的用戶可以創(chuàng)建...

    Hydrogen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<