django-guardian是為Django提供額外的基於對象權限的身份驗證後端。
要求Django1.7或更高版本
pip install django-guardian
或
easy_install django-guardian
安裝完成後,我們可以將django-guardian加入到我們的項目。首先在settings裡將guardian加入到INSTALLED_APPS
INSTALLED_APPS = ( 39;guardian&39;django.contrib.auth.backends.ModelBackend& 這是Django默認的 &39;, Create your models here.class Task(models.Model): summary = models.CharField(max_length=32) content = models.TextField() reported_by = models.ForeignKey(User) created_at = models.DateTimeField(auto_now_add=True) class Meta: permissions = ( (&39;, &39;), )
說明:permissions使我們自定義的權限,當我們調用migrate命令的時候,view_task將會被添加到默認的權限集合中。 默認情況下Django為每個模型註冊3個權限 * add_模型名 * change_模型名 * delete_模型名
我們可以使用guardian.shortcuts.assign_perm()方法可以為用戶/組分配對象權限
>>> from django.contrib.auth.models import User>>> from todo.models import Task>>> from guardian.shortcuts import assign_perm>>> boss = User.objects.create(username=&34;) 34;joe& 創建用戶joe>>> task = Task.objects.create(summary=&34;, content=&34;, reported_by=boss) 39;view_task& 默認用戶對這個對象沒有權限False>>> assign_perm(&39;, joe, task) 39;view_task&34;employees&34;change_task&34;jack&39;change_task&39;change_task&39;change_task&39;change_task&39;view_task&39;todo.change_task&39;todo.view_task&39;view_task&39;change_task&34;context_var&34;veiw_task&39;guardian.UserObjectPermission&34;view_task&34;view_task&39;guardian.UserObjectPermission&34;view_task", task)False
Django配有優秀和廣泛使用的admin應用程式。它為Django應用程式提供基本的內容管理。具有訪問管理面板的用戶可以管理系統提供的用戶,組,權限和其他數據。
django-guardian 為Django的admin提供簡單的對象許可管理集成。
如果在這裡學到了知識,那麼請關注我或加入圈子一起交流學習,這裡將持續更新關於django的更多好內容。