国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Django權限使用總結

JellyBool / 2813人閱讀

摘要:權限的定義可以使用多種方式進行定義在中定義我們可以在的中對進行定義。官網示例如下權限的校驗在中校驗權限利用校驗官網示例如下注意除了用指定單個權限之外,還支持以及用于多個權限。實際上在當中對于的使用提供了兩個的功能,一個是另一個是。

概述

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

Permission在Django中的工作原理

首先,我們需要定義permission對象,而這個對象在定義的時候是需要與對應的model綁定的。
然后,定義好的permission就可以賦予給user或者group對象,實現permission與用戶的綁定。
最后,在view以及template中可以通過API對于user或者group進行權限的校驗了。

權限的定義

permission可以使用多種方式進行定義:

在model中定義

我們可以在model的Meta中對permission進行定義。
官網示例如下:

多帶帶定義

或者可以在獨立于model之外的位置定義。
官網示例如下:

不綁定特定的model定義

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

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)

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

一個更為通用的解決方案

這樣就會得到我們所定義的permission對象了。而且Django會為每個permission賦予一個全局唯一的code,規則:.。通過這個code就可以指定相應的permission

權限的授予

權限的授予可以通過user或者group來進行。
user通過user_permissions屬性設置permission,group通過permissions屬性設置permission。

官網示例如下:

權限的校驗 在view中校驗權限 利用decorator校驗

官網示例如下:

注意:permissions除了用string指定單個權限之外,還支持list以及tuple用于多個權限。

利用Mixin校驗

官網示例如下:

在template中校驗權限

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

{{ user }}

{{ perms }}

其中的{{ perms }}變量就可以實現在template使用permission,從而達到通過不同的permission提供不同的template的功能。

實際上Django在template當中對于permission的使用提供了兩個API的功能,一個是User.has_module_perms;另一個是User.has_perm。
當你在template中使用{{ perms.foo }}的時候就會調用User.has_module_perms方法,如果用戶具有foo這個permission的話,這個值就會為True。
當你在template中使用{{ perms.foo.can_vote }}的時候就會調用User.has_perm方法,如果用戶具有foo.can_vote這個permission的話,這個值就會為True。

permission在template中的使用示例:


參考文檔

官網認證系統文檔
官網ContentType文檔
官網自定義校驗文檔

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38205.html

相關文章

  • 關于WEB前后端分離的要點總結(上)

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

    FullStackDeveloper 評論0 收藏0
  • 解決Python虛擬環境virtualenv下不能使用sudo提升權限問題

    摘要:解決虛擬環境下不能使用提升權限問題問題描述在虛擬環境下,執行某些命令需要有提升權限,會導致該條命令退出虛擬環境如啟動服務,需要監聽端口此時會提示權限不足,無法訪問端口。  解決Python虛擬環境下不能使用sudo提升權限問題 問題描述 在虛擬環境下,執行某些命令需要有sudo提升權限,會導致該條命令退出虛擬環境: 如啟動django 服務,需要監聽80端口: $: python ma...

    Lucky_Boy 評論0 收藏0
  • Django REST FrameWork中文教程4:驗證和權限

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

    luodongseu 評論0 收藏0
  • Django REST FrameWork中文教程4:驗證和權限

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

    _ang 評論0 收藏0
  • Django REST FrameWork中文教程4:驗證和權限

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

    Hydrogen 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<