①创建用户:
User.objects.create_user(username, email, password)
(比如前面的注册登录小案例,我们可以通过更改入库的代码,来实现user用户的创建~)
②认证用户:
因为创建的user用户的password是加密之后入库的,无法直接对比来判断用户是否存在,所以Django就自带了authenticate函数来进行用户认证。
- 导入所用函数:
from django.contrib.auth import authenticate
- 使用:
user = authenticate(username=username, password=password)
认证用户的密码是否有效, 若有效则返回代表该用户的user对象, 若无效则返回None(注意:该方法不检查is_active标志位.)
(比如前面的注册登录小案例,我们可以通过更改原本查询的代码,来实现user用户的认证~)
补充:现在前端验证是否登录的话直接user.username获取即可!(如果登录则会获取到登录的用户的名字;未登录则获取不到。)
③登录:
- 导入所用函数:
from django.contrib.auth import login
- 使用(login向session中添加SESSION_KEY, 便于对用户进行跟踪):
login(request, user)
注意——login不进行认证,也不检查is_active标志位, 所以一般和authenticate配合使用:
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
(比如前面的注册登录小案例,我们可以通过更改原本设置session的代码,来实现登录~)
④登出:
- 导入所用函数:
from django.contrib.auth import logout
- 使用(logout会移除request中的user信息, 并刷新session):
⑤只允许登录的用户访问:
-
@login_required修饰器修饰的view函数会先通过session key检查是否登录, 已登录用户可以正常的执行操作, 未登录用户将被重定向到login_url指定的位置;
-
若未指定login_url参数, 则重定向到settings.LOGIN_URL。
- 导入使用的函数:
from django.contrib.auth.decorators import login_required
- 使用:
@login_required(login_url=‘/accounts/login/’)
def my_view(request):
…
按照常规逻辑来说——你没登录,网站给你跳转到登录页面要求你登录,那么在你登录之后应该再给你跳转回去之前的页面。下面来带你实现:
我们使用⑤发现,比如我们未登录状态下访问一个页面,它会立马重定向到我们指定的登录页面。
现在有个需求,我们在登录之后,能够让页面回到我们先前访问的那个页面。观察URL发现,跳转到登录页面的URL里携带一个参数next,值为跳转的源路径。所以获取一下即可!
(比如前面的注册登录小案例,我们只需要在登录业务逻辑中进行判断,如果可以获取到index参数,那就说明我们是因为权限不够没有登录而跳转过来的;如果获取不到Index参数,那就说明我们是正常登录!)
⑥判断用户是否登录:
is_authenticated
通过在视图函数中利用User对象的is_authenticated方法进行判断用户是否登录。如:
===========================================================================================
django.contrib.auth.models.Group定义了用户组的模型, 每个用户组拥有id和name两个字段, 该模型在数据库被映射为auth_group数据表。
User对象中有一个名为groups的多对多字段, 多对多关系由auth_user_groups数据表维护。Group对象可以通过user_set反向查询用户组中的用户。
我们可以通过创建删除Group对象来添加或删除用户组:
导入使用的函数:
from django.contrib.auth.models import Group
group = Group.objects.create(name=group_name)
group.save()
group.delete()
我们可以通过标准的多对多字段操作管理用户与用户组的关系:
注意:下述的user是获取到的user实例,group也是获取到的group实例。比如:
user = User.objects.get(id=1)
group = Group.objects.get(id=1)
-
用户加入用户组:
user.groups.add(group)或group.user_set.add(user)
-
用户退出用户组:
user.groups.remove(group)或group.user_set.remove(user)
-
用户退出所有用户组:
user.groups.clear()
-
用户组中所有用户退出组:
group.user_set.clear()
4.Django权限系统auth模块中的——Permission模型
================================================================================================
Django的auth系统提供了模型级的权限控制, 即可以检查用户是否对某个数据表拥有增(add), 改(change), 删(delete)权限。
auth系统无法提供对象级的权限控制, 即检查用户是否对数据表中某条记录拥有增改删的权限。如果需要对象级权限控制可以使用django-guardian。假设在博客系统中有一张article数据表管理博文, auth可以检查某个用户是否拥有对所有博文的管理权限, 但无法检查用户对某一篇博文是否拥有管理权限。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。
分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
g.csdnimg.cn/img_convert/21b2604bd33c4b6713f686ddd3fe5aff.png)
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算