1、首先參考django官方文檔,將admin模塊搭建起來
2、一般我們設置了admin爲管理員,但是管理員默認具備所有權限,即使沒有顯式賦權。
3、如何查找用戶對應的權限
>>>from django.contrib.auth.models import User, Permission
>>> User.objects.get(username__exact='admin').user_permissions.values()
[{'content_type_id': 8, 'codename': u'change_articles', u'id': 23, 'name': u'Can change articles'}]
4、爲用戶增加權限
>>>permission = Permission.objects.get(codename='change_articles')
>>>user = User.objects.get(username__exact='lbin')
>>>user.user_permissions.add(permission)
>>>user.has_perm('change_articles') ##has_perm的參數爲codename
True
5、列出所有權限codename
>>> Permission.objects.all().values()
[{'content_type_id': 7, 'codename': u'add_logentry', u'id': 19, 'name': u'Can add log entry'}, {'content_type_id': 7, 'codename': u'change_logentry', u'id': 20, 'name': u'Can change log entry'}, {'content_type_id': 7, 'codename': u'delete_logentry', u'id': 21, 'name': u'Can delete log entry'}, {'content_type_id': 2, 'codename': u'add_group', u'id': 4, 'name': u'Can add group'}, {'content_type_id': 2, 'codename': u'change_group', u'id': 5, 'name': u'Can change group'}, {'content_type_id': 2, 'codename': u'delete_group', u'id': 6, 'name': u'Can delete group'}, {'content_type_id': 1, 'codename': u'add_permission', u'id': 1, 'name': u'Can add permission'}, {'content_type_id': 1, 'codename': u'change_permission', u'id': 2, 'name': u'Can change permission'}, {'content_type_id': 1, 'codename': u'delete_permission', u'id': 3, 'name': u'Can delete permission'}, {'content_type_id': 3, 'codename': u'add_user', u'id': 7, 'name': u'Can add user'}, {'content_type_id': 3, 'codename': u'change_user', u'id': 8, 'name': u'Can change user'}, {'content_type_id': 3, 'codename': u'delete_user', u'id': 9, 'name': u'Can delete user'}, {'content_type_id': 4, 'codename': u'add_contenttype', u'id': 10, 'name': u'Can add content type'}, {'content_type_id': 4, 'codename': u'change_contenttype', u'id': 11, 'name': u'Can change content type'}, {'content_type_id': 4, 'codename': u'delete_contenttype', u'id': 12, 'name': u'Can delete content type'}, {'content_type_id': 8, 'codename': u'add_articles', u'id': 22, 'name': u'Can add articles'}, {'content_type_id': 8, 'codename': u'change_articles', u'id': 23, 'name': u'Can change articles'}, {'content_type_id': 8, 'codename': u'delete_articles', u'id': 24, 'name': u'Can delete articles'}, {'content_type_id': 5, 'codename': u'add_session', u'id': 13, 'name': u'Can add session'}, {'content_type_id': 5, 'codename': u'change_session', u'id': 14, 'name': u'Can change session'}, '...(remaining elements truncated)...']
6、當普通用戶訪問時,就可以使用權限控制訪問了
@permission_required('general.add_articles', raise_exception=True, login_url='/login/')
def home(request):
#if not request.user.is_authenticated() and not request.user.has_perm('general.add_articles'):
# return redirect('/login/')
return render_to_response('general/home.html')