Django1.9
使用Django内置的权限验证机制。
内置权限表名
auth_permissions
models
# models.py
from django.db import models
class Student(models.Model):
...
class Meta:
...
# 内置权限
default_permissions = ('add',)
# 自定义权限
permissions = (
('view_student', 'Can view student'),
)
default_permissions
默认为('add', 'change', 'delete')
。你可以自定义这个列表,例如,如果你的应用程序不需要任何默认权限,你可以将这个列表设置为空列表。在迁移创建模型之前,必须在模型上指定它,以防止创建任何省略的权限。
例:add
将会在auth_permissin
表中新建一条权限数据,name
字段为Can add student
,codename
字段为add_student
。
permissions
permissions = (
('view_student', 'Can view student'),
)
views
permission_required
使用permission_required装饰器验证权限
# views.py
from django.contrib.auth.decorators import permission_required
@permission_required('app.view_student', login_url='/')
def students(request):
'''查看用户列表'''
return render(request, 'students.html')
has_perm
使用user对象的has_perm方法判断,返回True/False。
# views.py
def students(request):
'''查看学生列表'''
user = request.user
if user.has_perm('app.view_student') == True:
return render(request, 'students.html')
else:
pass # todo