一周学会Django5 Python Web开发 - Django5内置Auth认证系统-用户登录实现

锋哥原创的Python Web开发 Django5视频教程:

2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计57条视频,包括:2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~、第2讲 Django5安装、第3讲 Django5创建项目(用命令方式)等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV14Z421z78C/用户登录功能,后端验证主要通过auth模块提供的authenticate校验方法,以及login登录方法实现。

首先urls.py里加下映射:

# 跳转登录页面
    path('auth/toLogin', helloWorld.views.to_login),
    # 提交登录请求
    path('auth/login', helloWorld.views.login),

登录页面login.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
<form action="/auth/login" method="post">
    {% csrf_token %}
    <table>
        <tr>
            <th>用户登录</th>
        </tr>
        <tr>
            <td>用户名:</td>
            <td><input type="text" name="username" value="{{ username }}"></td>
        </tr>
        <tr>
            <td>密码:</td>
            <td><input type="password" name="password" value="{{ password }}"></td>
        </tr>
        <tr>
            <td>
                <input type="submit" value="提交">
            </td>
            <td>
                <font color="red">{{ errorInfo }}</font>
            </td>
        </tr>
    </table>
</form>
</body>
</html>

网站首页index.html,登录成功后跳转:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>网站首页</title>
</head>
<body>
网站首页,欢迎: {{ request.user }}
</body>
</html>

views.py里实现to_login和login方法。

通过auth.authenticate校验用户是否已经存在。校验用户成功后,返回的是一个封装好的用户对象;校验错误则返回None

用户对象is_active方法判断用户是否激活。

通过调用auth.login,用户登录成功之后,返回给客户端登录的凭证或者说是令牌、随机字符串,则不需要我们去操作diango_session表,会自动创建session

当执行完auth.authenticateauth.login后,也就是登录成功后,我们就可以通过request.user直接获取到当前登录的用户对象数据

  • 登录成功的情况下,该方法获得的是登录用户对象

  • 登录不成功的情况下,该方法获得的是匿名对象AnonymousUser

def to_login(request):
    """
    跳转登录页面
    :param request:
    :return:
    """
​
    return render(request, 'auth/login.html')
​
​
def login(request):
    """
    登录处理
    :param request:
    :return:
    """
    username = request.POST.get('username')
    password = request.POST.get('password')
    # 通过auth模块来检验加密后的密码 ,校验成功返回用户对象,否则返回None
    resUser: User = auth.authenticate(request, username=username, password=password)
    if resUser and resUser.is_active:
        print(resUser, type(resUser))
        # 用户登录成功之后(返回给客户端登录的凭证或者说是令牌、随机字符串)
        auth.login(request, resUser)
        return render(request, 'auth/index.html')
    else:
        return render(request, 'auth/login.html',
                      context={"errorInfo": "用户名或者密码错误", "username": username, "password": password})

我们来测试下:浏览器输入: http://127.0.0.1:8000/auth/toLogin 进入登录页面:

用户名密码输入错误,提示报错信息:

用户名密码输入正确,则跳转到主页:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/683547.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

企业购买一套ABAQUS需要多少钱?ABAQUS价格解析

在高性能仿真分析领域&#xff0c;ABAQUS软件凭借其强大的非线性分析能力、精确的求解精度以及广泛的应用范围&#xff0c;成为众多企业和研究机构的首选工具。然而&#xff0c;对于想要采购ABAQUS的企业来说&#xff0c;了解其价格体系是做出投资决策前的关键一步。亿达四方&a…

增值税发票OCR识别功能介绍

OCR增值税发票识别功能介绍如下&#xff1a; 一、技术原理 OCR增值税发票识别系统基于光学字符识别&#xff08;OCR&#xff09;技术和人工智能的支持&#xff0c;将传统纸质发票的信息自动转换为计算机可以读取的数字信息。具体技术流程包括&#xff1a; 图像预处理&#x…

Spring Boot项目中,如何在yml配置文件中读取maven pom.xml文件中的properties标签下的属性值

一、前言 在最近的项目开发过程中&#xff0c;有一个需求&#xff0c;需要在Spring Boot项目的yml配置文件中读取到mave的 pom.xml文件中的properties标签下的属性值&#xff0c;这个要怎么实现呢&#xff1f; 二、技术实践 pom.xml文件中增加测试属性 <properties><…

Vue06-el与data的两种写法

一、el属性 用来指示vue编译器从什么地方开始解析 vue的语法&#xff0c;可以说是一个占位符。 1-1、写法一 1-2、写法二 当不使用el属性的时候&#xff1a; 两种写法都可以。 v.$mount(#root);写法的好处&#xff1a;比较灵活&#xff1a; 二、data的两种写法 2-1、对象式…

基于web的垃圾分类回收系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;用户管理&#xff0c;公告管理&#xff0c;运输管理&#xff0c;基础数据管理 用户账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;运输管理&#xff0c;公告…

麒麟桌面操作系统KYLINOS 2403安装部署

原文链接&#xff1a;麒麟桌面操作系统KYLINOS 2403安装部署 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于麒麟桌面操作系统2403的安装部署文章。麒麟操作系统是中国自主研发的Linux发行版&#xff0c;以其安全性和稳定性受到广泛关注和使用。本文将详细介绍如…

ChatGPT基本原理详细解说

ChatGPT基本原理详细解说 引言 在人工智能领域&#xff0c;自然语言处理&#xff08;NLP&#xff09;一直是研究的热点之一。随着技术的发展&#xff0c;我们见证了从简单的聊天机器人到复杂的语言模型的演变。其中&#xff0c;ChatGPT作为一项突破性技术&#xff0c;以其强大…

算法与数据结构高手养成:朴素的贪心法(下)二分答案

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

Grafana 还可以这样学,有示例一看就懂

Grafana 是一款流行的开源数据可视化工具&#xff0c;用于监控和分析系统、应用程序和服务的性能和运行状况。它提供了丰富的图表和面板选项&#xff0c;用户可以通过 Grafana 创建各种可视化图表&#xff0c;如折线图、柱状图、饼图等&#xff0c;以便更直观地展示数据。 Gra…

斯坦福AI团队抄袭事件,清华回应:也算国际认可

近日&#xff0c;斯坦福大学人工智能&#xff08;AI&#xff09;团队的一项备受瞩目的研究——Llama3-V大模型&#xff0c;陷入了抄袭风波。该团队原本以其创新的模型和低廉的训练成本为亮点&#xff0c;声称能够在低成本下训练出性能卓越的SOTA多模态大模型。然而&#xff0c;…

【面试八股总结】锁:互斥锁、自旋锁、读写锁、乐观锁、悲观锁

使用加锁操作和解锁操作可以解决并发线程/进程的互斥问题。任何想进入临界区的线程&#xff0c;必须先执行加锁操作。若加锁操作顺利通过&#xff0c;则线程可进入临界区&#xff1b;在完成对临界资源的访问后再执行解锁操作&#xff0c;以释放该临界资源。 一、互斥锁与自旋锁…

为什么北京二手房的热度传导不到新房?

尽管北京还没有跟进出台新政细则&#xff0c;但二手房市场已经“火”了一把。 根据北京市住建委官网数据统计&#xff0c;5月北京二手房住宅网签达到了13383套&#xff0c;相比4月的13354套微涨0.2%&#xff0c;同比2023年同期也上涨了3.1%。 在一系列楼市松绑政策的影响下&a…

前端列表可滚动,可轮播

前端列表可滚动&#xff0c;可轮播 <ulclass"scroll-list"ref"scroll_List"mouseenter"cancelScroll()"mouseleave"autoScroll()"><liclass"list-item"v-for"(item,index) in tableData3":class"[…

存储器粗解

只读存储器&#xff08;ROM&#xff09; &#xff08;Read Only Memory&#xff09; 可编程程序只读存储器&#xff08;PROM&#xff09;&#xff08;Programmable ROM&#xff09; 仅能写录一次。 PROM在出厂时&#xff0c;存储的内容全为1&#xff0c;用户可以根据需要将其…

SpringSecurity6从入门到实战之默认用户的生成流程

SpringSecurity6从入门到实战之默认用户的生成流程 这次还是如标题所示,上一章我们的登录页面已经知道是如何生成了.那么,我们通过表单登录的user用户以及密码SpringSecurity是如何进行生成的呢? 默认用户生成 让我们把登录流程重新拉回到读取/META-INF/spring/ .imports文件 …

动物收容所

题目链接 动物收容所 题目描述 注意点 若没有可以收养的动物&#xff0c;则返回[-1,-1]收纳所的最大容量为20000编号随着收养动物的增加自增 解答思路 利用队列先进先出的特点将猫和狗分别存进两个队列中&#xff0c;关键是dequeueAny这个方法中如果此时猫和狗的队列中都有…

安装Ubuntu桌面系统(虚拟机)

VirtualBox创建虚拟机&#xff08;为安装Ubuntu桌面系统&#xff09;-CSDN博客 虚拟机的创建方法如上链接。当虚拟机开始引导之后&#xff0c;便正式开始Ubuntu桌面版的安装过程。Ubuntu桌面版界面做得很漂亮&#xff0c;操作起来也方便&#xff0c;很适合作为入门Linux的操作…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于麻雀搜寻优化算法的代理购电用户用电量多维度协同校核》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

实践记录-docker-step6-7/10-参考docker官网步骤操作记录-绑定挂载-多容器

参考来源&#xff1a; &#xff08;应用的容器化实践&#xff09;docker官方入门指南 https://docs.docker.com/get-started/ 本指南包含有关如何开始使用 Docker 的分步说明。本指南介绍如何&#xff1a; 将映像作为容器生成并运行。 使用 Docker Hub 共享映像。 使用带有数据…

Python3 迭代器和生成器

前言 本文主要介绍Python中的迭代器和生成器&#xff0c;主要内容包括 迭代器概述、生成器简介。 文章目录 前言一、迭代器简介二、生成器简介 一、迭代器简介 在 Python 中&#xff0c;迭代器(iterator)是一个实现了迭代器协议&#xff08;Iterator Protocol&#xff09;的…