返回顶部
首页 > 资讯 > 后端开发 > Python >Django自定义权限及用户分组
  • 297
分享到

Django自定义权限及用户分组

2024-04-02 19:04:59 297人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

登录、注销和登录限制: 登录 在使用authenticate进行验证后,如果验证通过了。那么会返回一个user对象,拿到user对象后,可以使用Django.contrib.auth

登录、注销和登录限制:

登录

在使用authenticate进行验证后,如果验证通过了。那么会返回一个user对象,拿到user对象后,可以使用Django.contrib.auth.login进行登录。示例代码如下:

user = authenticate(username=username, passWord=password)
if user is not None:
    if user.is_active:
        login(request, user)

注销:

注销,或者说退出登录。我们可以通过djanGo.contrib.auth.logout来实现。他会清理掉这个用户的session数据。

登录限制:

有时候,某个视图函数是需要经过登录后才能访问的。那么我们可以通过django.contrib.auth.decorators.login_required装饰器来实现。示例代码如下:

from django.contrib.auth.decorators import login_required
# 在验证失败后,会跳转到/accounts/login/这个url页面
@login_required(login_url='/accounts/login/')
def my_view(request):
    pass

权限:

Django中内置了权限的功能。他的权限都是针对表或者说是模型级别的。比如对某个模型上的数据是否可以进行增删改查操作。他不能针对数据级别的,比如对某个表中的某条数据能否进行增删改查操作(如果要实现数据级别的,考虑使用django-guardian)。创建完一个模型后,针对这个模型默认就有三种权限,分别是增/删/改/。可以在执行完migrate命令后,查看数据库中的auth_permission表中的所有权限。

其中的codename表示的是权限的名字。name表示的是这个权限的作用。

通过定义模型添加权限:

如果我们想要增加新的权限,比如查看某个模型的权限,那么我们可以在定义模型的时候在Meta中定义好。示例代码如下:

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    author = models.ForeignKey(get_user_model(),on_delete=models.CASCADE)
    class Meta:
        permissions = (
            ('view_article','can view article'),
        )

通过代码添加权限:

权限都是django.contrib.auth.Permission的实例。这个模型包含三个字段,name、codename以及content_type,其中的content_type表示这个permission是属于哪个app下的哪个models。用Permission模型创建权限的代码如下:

from django.contrib.auth.models import Permission,ContentType
from .models import Article
content_type = ContentType.objects.get_for_model(Article)
permission = Permission.objects.create(name='可以编辑的权限',codename='edit_article',content_type=content_type)

用户与权限管理:

权限本身只是一个数据,必须和用户进行绑定,才能起到作用。User模型和权限之间的管理,可以通过以下几种方式来管理:

  • myuser.user_permissions.set(permission_list):直接给定一个权限的列表。
  • myuser.user_permissions.add(permission,permission,...):一个个添加权限。
  • myuser.user_permissions.remove(permission,permission,...):一个个删除权限。
  • myuser.user_permissions.clear():清除权限。
  • myuser.has_perm('<app_name>.<codename>'):判断是否拥有某个权限。权限参数是一个字符串,格式是app_name.codename。
  • myuser.get_all_permissons():获取所有的权限。

权限限定装饰器:

使用django.contrib.auth.decorators.permission_required可以非常方便的检查用户是否拥有这个权限,如果拥有,那么就可以进入到指定的视图函数中,如果不拥有,那么就会报一个400错误。示例代码如下:

from django.contrib.auth.decorators import permission_required
@permission_required('front.view_article')
def my_view(request):
    ...

分组:

权限有很多,一个模型就有最少三个权限,如果一些用户拥有相同的权限,那么每次都要重复添加。这时候分组就可以帮我们解决这种问题了,我们可以把一些权限归类,然后添加到某个分组中,之后再把和把需要赋予这些权限的用户添加到这个分组中,就比较好管理了。分组我们使用的是django.contrib.auth.models.Group模型, 每个用户组拥有id和name两个字段,该模型在数据库被映射为auth_group数据表。

分组操作:

Group.object.create(group_name):创建分组。

group.permissions:某个分组上的权限。多对多的关系。

  • group.permissions.add:添加权限。
  • group.permissions.remove:移除权限。
  • group.permissions.clear:清除所有权限。
  • user.get_group_permissions():获取用户所属组的权限。

user.groups:某个用户上的所有分组。多对多的关系。

在模板中使用权限:

在settings.TEMPLATES.OPTIONS.context_processors下,因为添加了django.contrib.auth.context_processors.auth上下文处理器,因此在模板中可以直接通过perms来获取用户的所有权限。示例代码如下:

{% if perms.front.add_article %}
    &lt;a href='/article/add/'&gt;添加文章&lt;/a&gt;
{% endif %}

以上就是Django登录权限及分组模板使用权限的详细内容,更多关于Django权限分组的资料请关注编程网其它相关文章!

--结束END--

本文标题: Django自定义权限及用户分组

本文链接: https://lsjlt.com/news/151248.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Django自定义权限及用户分组
    登录、注销和登录限制: 登录 在使用authenticate进行验证后,如果验证通过了。那么会返回一个user对象,拿到user对象后,可以使用django.contrib.auth...
    99+
    2024-04-02
  • django之用户、用户组及权限设置方式
    目录一,django中超级用户与普通用户的本质区别1,当使用命令python manage.py createsuperuser后2,使用命令创建普通用户后3,使用authentic...
    99+
    2023-05-12
    django用户 django用户组 django权限设置
  • Android权限控制之自定义权限
    天哪,这篇文章终于说道如何自定义权限了,左盼右盼,其实这个自定义权限相当easy。为了方便叙述,我这边会用到两个app作为例子示范。 Permission App: used ...
    99+
    2022-06-06
    自定义 Android
  • Django自定义分页
    自定义分页 稳扎稳打版 def book(request): # 从URL取参数(访问的页码) page_num = request.GET.get("page") try: # 将取出的p...
    99+
    2023-01-30
    分页 自定义 Django
  • Django用户认证系统(三)组与权限
    原文:https://www.cnblogs.com/linxiyue/p/4060817.html Django的权限系统很简单,它可以赋予users或groups中的users以权限。 Django admin后台就使用了该权限系统,...
    99+
    2023-01-30
    权限 用户 系统
  • linux用户组以及权限总结
    用户组 在linux 中每个用户必须属于一个组,而Linux下有三种组的概念,如下: 文件所拥有者 用户所在组 其他组 文件所有者: 就是文件的创造者,谁创建的文件,谁就是文件的所有者。 用户所在组: ...
    99+
    2022-06-04
    linux用户组权限 linux用户组以及权限
  • Django自定义User模型、认证、权限控制的操作
    Django自带强大的User系统,为我们提供用户认证、权限、组等一系列功能,可以快速建立一个完整的后台功能。 但User模型并不能满足我们的需求,例如自带的User表中没有手机号码...
    99+
    2024-04-02
  • Django rest framework如何自定义用户表
    目录说明1. Django项目和应用创建2. 自定义User表3. 序列化和路由3. DRF配置4. 同步数据库5. 测试6. 命令行注册用户说明 Django 默认的用户表 aut...
    99+
    2024-04-02
  • Django 中怎么自定义用户模块
    这篇文章将为大家详细讲解有关Django 中怎么自定义用户模块,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、概述Django中自带的User Model使用起来是比较方便的,但是通常我们...
    99+
    2023-06-02
  • Django rest framework自定义用户表的方法
    这篇文章主要介绍了Django rest framework自定义用户表的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。说明Django 默认的用户表 auth_user...
    99+
    2023-06-15
  • linux怎么为用户组分配权限
    要为用户组分配权限,可以使用chmod命令。1. 找到要分配权限的文件或目录。可以使用ls命令来列出当前目录下的文件和目录。2. 使...
    99+
    2023-08-16
    linux
  • 创建用户,库及权限的分配
    --建数据库  create database zxlh default character set utf8; --建用户,只访问zxlh数据库,%表示不限制任何ip grant all PR...
    99+
    2024-04-02
  • 在Django中创建自己的自定义用户模型
    目录1. Django安装2.创建Django应用3.该应用程序的自定义模型4.迁移模型自定义用户模型有什么需求? 创建自己的自定义用户模型至关重要。将来,如果要对模型进行一些更改,...
    99+
    2024-04-02
  • 管理Mysql用户及分配权限介绍
    本文主要给大家简单讲讲管理Mysql用户及分配权限介绍,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望管理Mysql用户及分配权限介绍这篇文章可以给大家带来一...
    99+
    2024-04-02
  • 自定义SharePoint列表或库的权限
    在SharePoint中,您可以自定义列表或库的权限,以控制谁可以访问、编辑和删除内容。下面是自定义SharePoint列表或库权限...
    99+
    2023-09-13
    SharePoint
  • Oracle中定义者权限和调用者权限的示例分析
    这篇文章给大家分享的是有关Oracle中定义者权限和调用者权限的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。定义者权限:定义者权限指使用它所有者的权限,而不是当前用户来...
    99+
    2024-04-02
  • 添加删除用户、组,分配目录权限
    一、用户、组部分1.添加删除用户(并分配到组)useradd -g preferred -G supplement username-g 登陆首选组-G 其...
    99+
    2024-04-02
  • SpringBoot Security权限控制自定义failureHandler实例
    目录创建hander文件夹修改WebSecurityConfig配置创建hander文件夹 在 java 源码目录下创建hander文件夹, 在该文件夹下创建CustomAuthen...
    99+
    2022-11-16
    SpringBoot Security failureHandler SpringBoot Security
  • Django自定义分页与bootstrap分页结合
    django中有自带的分页模块Paginator,想Paginator提供对象的列表,就可以提供每一页上对象的方法。 这里的话不讲解Paginator,而是自定义一个分页类来完成需求: class Pa...
    99+
    2022-06-04
    分页 自定义 Django
  • linux用户、权限及shell命令的示例分析
    这篇文章将为大家详细讲解有关linux用户、权限及shell命令的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。用户 用户组      ...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作