permission_required()
函数是Django框架提供的一个装饰器,该装饰器可以用来限制用户对某个视图函数的访问权限,只有满足用户权限条件才能访问该视图函数,否则会自动跳转到指定的登录页面或错误页面。
该装饰器的基本用法如下:
from django.contrib.auth.decorators import permission_required
@permission_required('app_label.permission_name', login_url='/login/')
def my_view(request):
# your view code here
其中,app_label.permission_name
参数代表需要检查的权限。它是一个由应用名称和权限名称组成的字符串,中间以.
分隔,例如:'blog.view_post'
表示 blog
应用下的 view_post
权限。如果需要多个权限,可以使用逗号分隔。
login_url
参数指定权限不足时跳转的登录页面,如果不指定,默认跳转到/accounts/login/
。
下面提供两个实例:
- 针对某一功能页面需要管理员权限才能访问:
from django.contrib.auth.decorators import permission_required
@permission_required('auth.is_superuser', login_url='/login/')
def manage_users(request):
# 仅管理员可以访问用户管理页面
# your view code here
在这个例子中,auth.is_superuser
表示auth
应用下的操作超级用户权限,只有超级用户才能访问管理用户的页面。
- 针对某一视图函数需要特定权限才能访问:
from django.contrib.auth.decorators import permission_required
@permission_required('blog.add_post', login_url='/login/')
def create_post(request):
# 仅拥有添加文章的权限的用户可以访问该函数
# your view code here
在这个例子中,blog.add_post
表示blog
应用下的添加文章权限,只有拥有添加文章权限的用户才能访问create_post()
函数。