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')