Django设置权限

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 studentcodename字段为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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django 提供了一个强大的权限系统,可以帮助你管理用户权限。在 Django 中,你可以使用内置的 User 和 Group 模型来管理用户和用户组。 首先,你需要在你的 Django 项目中启用权限系统。在你的 settings.py 文件中,确保 'django.contrib.auth' 和 'django.contrib.contenttypes' 应用被添加到了 INSTALLED_APPS 列表中。 接下来,你可以使用 Django 的认证系统来处理用户认证和授权的任务。你可以使用以下方法来检查用户权限: 1. `user.has_perm(permission, obj=None)` - 检查用户是否有指定的权限。`permission` 参数是一个字符串,表示权限的名称。`obj` 参数是可选的,用于在特定对象上检查权限。 2. `user.has_perms(permissions, obj=None)` - 检查用户是否拥有所有指定的权限。`permissions` 参数是一个字符串列表,表示多个权限的名称。 3. `user.has_module_perms(app_label)` - 检查用户是否对指定应用程序拥有任何权限。`app_label` 参数是应用程序的名称。 此外,你还可以使用装饰器 `@permission_required` 和 `@login_required` 来限制对视图函数的访问权限。`@permission_required` 装饰器可以确保只有具有特定权限的用户才能访问被装饰的视图函数,而 `@login_required` 装饰器可以确保只有已登录的用户才能访问被装饰的视图函数。 当然,你也可以自定义权限,通过在 models.py 中创建 Permission 对象,并在 User 或 Group 对象上分配这些自定义权限。 要了解更多关于 Django 的用户权限管理的信息,可以参考 Django 官方文档中的相关章节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值