Django用户认证系统

简介: .权限管理Django利用auth_permission表定义权限Permission表的定义非常简单,只有三个属性:name:权限显示的名称,最多允许255个字符content_type:关联ContentType(记录App与model的信息)codename:权限的名称编码,最多允许100个字


1.用户身份认证


Django提供了authenticate方法用于对用户身份进行认证


user = authenticate(username='admin', password='admin')


如果认证成功,将会返回user对象,否则返回None


2.权限管理


Django利用auth_permission表定义权限


Permission表的定义非常简单,只有三个属性:


name:权限显示的名称,最多允许255个字符

content_type:关联ContentType(记录App与model的信息)

codename:权限的名称编码,最多允许100个字符


ea3272e2c8734ab2b207f0088d94dd64.png


3.权限的授予


首先,获取到User对象和Permission对象实例:


dahe = User.objects.get(username='dahe')

add_topic = Permission.objects.get(codename='add_topic')

change_topic = Permission.objects.get(codename='change_topic')

对于User对象实例,可以使用get_all_permissions方法查看当前它所被授予的权限:


dahe_permission = dahe.get_all_permissions()


给dahe用户添加权限:


dahe.user_permissions.add(add_topic, change_topic)
dahe_permission = dahe.get_all_permissions()



给用户删除权限:


dahe.user_permissions.remove(add_topic)


清空用户权限


dahe.user_permissions.clear()


给用户组添加、删除权限的过程与User是类似的🎶


4.权限校验


权限应用到业务系统中时,首先是给用户授予权限,之后校验用户是否拥有某项权限而决定是否能够执行某项操作


用户权限校验可以使用User实例的has_perm或has_perms方法,前者判断当前用户是否有某一项权限,后者判断用户是否同时拥有多个权限


has = dahe.has_perms(['post.add_topic', 'post.delete_topic'])
# False



目录
相关文章
|
8天前
|
开发者 Python
Django模板系统的强大之处:动态渲染与扩展性
【4月更文挑战第15天】Django模板系统是Web开发中的强大工具,支持动态渲染和扩展性。动态渲染包括变量、标签和过滤器的使用,实现内容根据上下文数据动态生成。模板继承和自定义标签则提升了扩展性,减少代码重复,增强可维护性。通过这些特性,Django模板系统助力开发者构建高效、动态的Web应用。
|
9月前
|
SQL 前端开发 JavaScript
基于python+django的外卖点餐网站-外卖点餐系统
该系统是基于python+django开发的外卖点餐系统。适用场景:大学生、课程作业、毕业设计。学习过程中,如遇问题可以在github给作者留言。
135 0
|
9月前
|
机器学习/深度学习 算法 数据可视化
花朵识别系统python+TensorFlow+Django网页界面+深度学习模型+卷积网络算法【完整代码】
花朵识别系统,基于Python实现,深度学习卷积神经网络,通过TensorFlow搭建卷积神经网络算法模型,并对数据集进行训练最后得到训练好的模型文件,并基于Django搭建可视化操作平台。
150 0
|
9月前
|
机器学习/深度学习 移动开发 算法
Python垃圾识别系统,TensorFlow+Django网页框架+深度学习模型+卷积网络【完整代码】
垃圾识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对5种垃圾数据集进行训练,最后得到一个识别精度较高的模型。并基于Django,开发网页端操作平台,实现用户上传一张垃圾图片识别其名称。
163 0
|
7月前
|
前端开发 JavaScript 数据可视化
基于Python+Django实现一个电商购物网站系统
基于Python+Django实现一个电商购物网站系统
264 0
|
8月前
|
计算机视觉 C++ Python
Python+Django人脸识别考勤系统网站
这篇博客针对<<Python+Django人脸识别考勤系统网站>>编写代码,代码整洁,规则,易读。 学习与应用推荐首选。
141 0
|
8月前
|
计算机视觉 C++ Python
Django网页+Yolov5垃圾识别系统
这篇博客针对<<Django网页+Yolov5垃圾识别系统>>编写代码,代码整洁,规则,易读。 学习与应用推荐首选。
221 0
|
9月前
|
Shell 数据库 数据库管理
【Django学习】(一)Django的环境搭建--windows系统
【Django学习】(一)Django的环境搭建--windows系统
|
9月前
|
监控 JavaScript 前端开发
基于django的物流管理系统(二)
基于django的物流管理系统(二)
115 0
|
9月前
|
机器学习/深度学习 编解码 算法
鸟类识别系统python+TensorFlow+Django网页界面+卷积网络算法+深度学习模型
鸟类识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
200 0
鸟类识别系统python+TensorFlow+Django网页界面+卷积网络算法+深度学习模型