在使用authenticate
進行驗證後,如果驗證通過了。那麼會返回乙個user
物件,拿到user
物件後,可以使用django.contrib.auth.login
進行登入。示例**如下:
user = authenticate(username=username, password=password)
if user is
notnone
:if user.is_active:
login(request, user)
登出,或者說退出登入。我們可以通過django.contrib.auth.logout
來實現。他會清理掉這個使用者的session
資料。
有時候,某個檢視函式是需要經過登入後才能訪問的。那麼我們可以通過django.contrib.auth.decorators.login_required
裝飾器來實現。示例**如下:
from django.contrib.auth.decorators import login_required
# 在驗證失敗後,會跳轉到/accounts/login/這個url頁面
@login_required(login_url=
'/accounts/login/'
)def
my_view
(request)
:pass
django
中內建了許可權的功能。他的許可權都是針對表或者說是模型級別的。比如對某個模型上的資料是否可以進行增刪改查操作。他不能針對資料級別的,比如對某個表中的某條資料能否進行增刪改查操作(如果要實現資料級別的,考慮使用django-guardian
)。建立完乙個模型後,針對這個模型預設就有三種許可權,分別是增/刪/改/。可以在執行完migrate
命令後,檢視資料庫中的auth_permission
表中的所有許可權。
其中的codename
表示的是許可權的名字。name
表示的是這個許可權的作用。
如果我們想要增加新的許可權,比如檢視某個模型的許可權,那麼我們可以在定義模型的時候在meta
中定義好。示例**如下:
class
article
(models.model)
: title = models.charfield(max_length=
100)
content = models.textfield(
) author = models.foreignkey(get_user_model(
),on_delete=models.cascade)
class
meta
: permissions =((
'view_article'
,'can view article'),
)
from django.contrib.auth.models import permission,contenttype
from
.models import article
content_type = contenttype.objects.get_for_model(article)
permission = permission.objects.create(name=
'可以編輯的許可權'
,codename=
'edit_article'
,content_type=content_type)
許可權本身只是乙個資料,必須和使用者進行繫結,才能起到作用。user
模型和許可權之間的管理,可以通過以下幾種方式來管理:
myuser.user_permissions.set(permission_list)
:直接給定乙個許可權的列表。
myuser.user_permissions.add(permission,permission,...)
:乙個個新增許可權。
myuser.user_permissions.remove(permission,permission,...)
:乙個個刪除許可權。
myuser.user_permissions.clear()
:清除許可權。
myuser.get_all_permissons()
:獲取所有的許可權。
使用django.contrib.auth.decorators.permission_required
可以非常方便的檢查使用者是否擁有這個許可權,如果擁有,那麼就可以進入到指定的檢視函式中,如果不擁有,那麼就會報乙個400
錯誤。示例**如下:
from django.contrib.auth.decorators import permission_required
@permission_required(
'front.view_article'
)def
my_view
(request):.
..
許可權有很多,乙個模型就有最少三個許可權,如果一些使用者擁有相同的許可權,那麼每次都要重複新增。這時候分組就可以幫我們解決這種問題了,我們可以把一些許可權歸類,然後新增到某個分組中,之後再把和把需要賦予這些許可權的使用者新增到這個分組中,就比較好管理了。分組我們使用的是django.contrib.auth.models.group
模型, 每個使用者組擁有id
和name
兩個字段,該模型在資料庫被對映為auth_group
資料表。
group.object.create(group_name)
:建立分組。
group.permissions
:某個分組上的許可權。多對多的關係。
user.groups
:某個使用者上的所有分組。多對多的關係。
在settings.templates.options.context_processors
下,因為新增了django.contrib.auth.context_processors.auth
上下文處理器,因此在模板中可以直接通過perms
來獲取使用者的所有許可權。
許可權分組管理
一,許可權分組列表 1.介面設計 1.介面說明 類目 說明 請求方法 get url定義 admin groups 引數格式 無引數 2.返回結果 html 二 許可權分組詳情頁 1.介面設計 類目 說明 請求發法 get url定義 admin group 引數格式 路徑引數 2.引數說明 引數名...
django框架F Q 聚合與分組操作示例
f 使用查詢條件的值,專門取物件中某列值的操作,可以對同乙個表中的兩個列進行比較 from django.db.models import f ret models.book.objects.filter count lt f sale values 查詢 列 count sale的資料 f程式設計...
許可權,角色,分組,部門
資源概念 資源就是想要的到的最終物質,我們可以給每乙個資源定義乙個許可權,也可以給某一類資源定義乙個許可權 許可權概念 許可權是對資源的一種保護訪問.使用者要訪問a資源前提是使用者必須有a資源的訪問許可權.角色概念 實事上我們不會直接把許可權賦予給使用者,而是通過角色來賦予給使用者,因為使用者擁有某...