Django Auth组件

news2025/2/23 13:12:35

文章目录

  • 前言
  • 一、使用场景
  • 二、使用步骤
      • 1.验证用户( authenticate() 方法)
      • 2.注册用户
      • 3.退出登陆
      • 4.装饰器


前言

Django 的用户认证组件基于以下几个核心概念:
1.用户认证:处理用户的登录、注销和密码管理,提供了一个User模型和相关的视图、表单和后台管理功能
2.权限和组管理:可以创建和管理用户权限(例如,查看、编辑、删除的权限),以及将用户分配到不同的组来简化权限管理
3.会话管理:自动处理用户的会话(即用户登录后的状态保持),确保用户在会话期间不需要重新登录
4.密码哈希:为用户密码提供安全的哈希处理,以防止明文密码存储
5.用户注册:提供了创建新用户的功能,通常通过自定义表单来实现

我们这里主要以登录注册相关为主


一、使用场景

Django 用户认证(Auth)组件一般用在用户的登录注册上,用于判断当前的用户是否合法,并跳转到登陆成功或失败页面
Django 用户认证(Auth)组件需要导入 auth 模块:

常用的功能和类:
User 模型:Django默认提供的用户模型,包含基本的用户信息字段(用户名、密码、邮箱等)
AuthenticationForm:用于处理用户登录的表单
UserCreationForm 和 UserChangeForm:用于处理用户注册和用户信息更新的表单
LoginView 和 LogoutView:处理用户登录和注销的视图
Permission 和 Group 模型:用于管理权限和用户组

二、使用步骤

1.验证用户( authenticate() 方法)

views.py新增方法(登陆验证)

def login(request):
    if request.method == 'GET':
        return render(request, 'login.html')
    else:
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = auth.authenticate(username=username, password=password)
        if user is not None:
        	# 验证用户一般配合登陆用户一起使用,验证完用户可以通过login()登陆用户
            auth.login(request, user)
            return redirect('/index/')
        else:
            return render(request, 'login.html', {'error': '用户名或密码错误'})

路由:

path('login', views.login, name='login'),

templates下增加页面:

<Doctype html>
<html>
<head>
	<title>Login Page</title>
</head>
<body>
	<h1>Login Page</h1>
	<form method="post" action="">
		{% csrf_token %}
		<label for="username">Username:</label>
		<input type="text" id="username" name="username" required><br><br>
		<label for="password">Password:</label>
		<input type="password" id="password" name="password" required><br><br>
		<input type="submit" value="Login">
        <p>{{error}}</p>
	</form>
</body>

访问链接:http://127.0.0.1:8000/article/login
在这里插入图片描述

2.注册用户

创建用户对象的三种方法:

create():创建一个普通用户,密码是明文的
User.objects.create(username='test',password='123456')

create_user():创建一个普通用户,密码是密文的
User.objects.create_user(username='test',password='123456')

create_superuser():创建一个超级用户,密码是密文的,要多传一个邮箱 email 参数
User.objects.create_superuser(username='test',password='123456',email='test@qq.com')

3.退出登陆

使用 logout() 方法,需要清空session信息,将request.user赋值为匿名用户

def logout(request):
    user = auth.logout(request)
    return redirect("/login")

4.装饰器

目的:需要登录成功后才能访问的页面统一加装饰器
使用前导入from django.contrib.auth.decorators import login_required
定义方法:

from django.contrib.auth.decorators import login_required

@login_required
def index(request):
    return HttpResponse('hello world')

访问链接:http://127.0.0.1:8000/article/index会自动跳转到登陆页面
在这里插入图片描述
链接中?next=/article/index为用户登录成功后重定向的 URL

若用户一开始就访问登录页面 login,我们就需要自己设置这个next的url,不然request.GET.get(“next”) 获取不到值

# 如果直接访问login,get() 就取不到值,所以通过 or 自定义设置返回的页面
path = request.GET.get("next") or "/index/"
return redirect(path)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

技术美术一百问(02)

问题 前向渲染和延迟渲染的流程 前向渲染和延迟渲染的区别 G-Buffer是什么 前向渲染和延迟渲染各自擅长的方向总结 GPU pipeline是怎么样的 Tessellation的三个阶段 什么是图形渲染API? 常见的图形渲染API有哪些&#xff1f; 答案 1.前向渲染和延迟渲染的流程 【例图…

图神经网络池化方法

图神经网络池化方法 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 图神经网络池化方法前言一、扁平图池化二、分层图池化1.节点聚类池化2.节点丢弃池化 参考文献 前言 图池化操作根据其池化策略的差异&#xff…

软考(中级-软件设计师)(0919)

软考 一、软件设计师-历年考试考点分布情况-上午-计算机与软件工程知识 知识点分数说明比例软件工程基础知识11开发模型、设计原则、测试方法、质量特性、CMM、Pert图、风险管理14.67%面向对象12面向对象基本概念、面向对象分析与设计、UML、常见算法16.00%数据结构与算法10…

代码随想录算法day37 | 动态规划算法part10 |

今天开始正式子序列系列&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 300.最长递增子序列 本题是比较简单的&#xff0c;感受感受一下子序列题目的思路。 力扣题目链接(opens new window) 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长…

读mamba有感,自然而然产生的问题及答案。

原文链接&#xff1a;https://arxiv.org/abs/2312.00752 Q&#xff1a;为什么说Mamba可以比肩甚至超越transformer&#xff1f;各自有什么优劣&#xff1f; A&#xff1a;Transformer在处理长序列时&#xff0c;存在着计算效率低下的问题&#xff0c;无法对有限窗口之外的任何…

查询中的行选择

用WHERE子句限制从查询返回的行。一个WHERE子句包含一个必须满足的条件&#xff0c;WHERE子句紧跟着FROM子句。如果条件是true&#xff0c;返回满足条件的行。 在语法中&#xff1a; WHERE 限制查询满足条件的行 condition 由列名、表达式、常数和比较操作组成…

bootstrap application nacos环境配置失效

tmd 环境配置 是yaml &#xff0c;yml 后缀配置不生效 (不&#xff0c;看你取得文件名是什么) 如果 file-extension 配置的是yaml 就读取不到 yml 中的配置 2 . 如果还不行&#xff0c;、nacos 配置只能卸载bootstrap.yml 中&#xff0c;application.yml 不生效 bootstrap.yml…

c/c++语言中extern的用法(VS编译)

c/c语言中extern的用法 前言&#xff1a;1. 声明外部变量2. 声明外部函数3. 在头文件中使用注意事项 效果展示&#xff1a; 前言&#xff1a; extern 关键字不仅在 C 语言中使用&#xff0c;在 C 语言中也同样适用。它主要用于声明一个变量或者函数是在别的文件或翻译单元中定…

怎么操作使http变成https访问?

获取SSL证书 选择证书颁发机构&#xff1a;可以选择受信任的免费或付费证书颁发机构&#xff08;CA&#xff09;如JoySSL 申请和验证域名&#xff1a;注册并填写注册码230920&#xff0c;验证域名所有权。下载SSL证书文件到本地电脑. JoySSL品牌证书 注册享大额优惠JoySSL是网…

Android开发高频面试题之——Android篇

Android开发高频面试题之——Android篇 Android开发高频面试题之——Java基础篇 Android开发高频面试题之——Kotlin基础篇 Android开发高频面试题之——Android基础篇 1. Activity启动模式 standard 标准模式,每次都是新建Activity实例。singleTop 栈顶复用。如果要启动的A…

车市状态喜人,国内海外“两开花”

文/王俣祺 导语&#xff1a;随着中秋假期告一段落&#xff0c;“金九”也正式过半&#xff0c;整体上这个销售旺季的数据可以说十分喜人&#xff0c;各家车企不是发布新车、改款车就是推出了一系列购车权益&#xff0c;充分刺激了消费者的购车热情。再加上政府政策的鼎力支持&a…

Unity 使用Editor工具查找 Prefab 中的指定脚本

在 Unity 项目中&#xff0c;随着项目规模的扩大和 Prefab 数量的增加&#xff0c;管理和定位 Prefab 中的脚本变得更加复杂。为了提高开发效率&#xff0c;所以需要编写一个自定义的 Unity Editor 工具&#xff0c;帮助查找某个 Prefab 中是否使用了指定的脚本。本文将介绍如何…

LIN总线CAPL函数——干扰LIN帧响应段(linInvertRespBit )

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

目标检测:滑块验证

最近在做一些爬虫相关的任务&#xff0c;有时候在登录时候需要去做滑块验证&#xff0c;刚好自己是做AI这一块得&#xff0c;就想着使用目标检测去做检测&#xff0c;然后绕过滑块。

AI 时代,大模型产业落地的八大思考

引言 在人工智能领域&#xff0c;大模型技术正逐渐成为推动行业进步的关键力量。随着技术的发展&#xff0c;大模型不仅在学术界引起了广泛的关注&#xff0c;也在产业界展现出巨大的应用潜力。然而&#xff0c;如何将这些强大的模型有效地应用到实际产业中&#xff0c;仍然是…

什么软件可以远程控制电脑?好用的电脑远程控制软件有哪些?这6款可以帮到你!

在如今的数字化办公环境中&#xff0c;远程控制电脑已成为解决问题、协作工作的必备技能。 无论是技术支持、远程办公&#xff0c;还是简单的文件传输&#xff0c;远程控制软件都能让我们随时随地连接其他电脑&#xff0c;省时省力。 那么&#xff0c;有哪些好用的远程控制软…

大数据和代理:揭示它们之间的微妙联系

大数据&#xff0c;顾名思义&#xff0c;是指使用传统数据处理应用程序无法有效处理的极其庞大而复杂的数据集。这些数据集的特点是数量庞大、速度快、种类繁多&#xff0c;有可能提供有价值的见解并支持各个行业的决策过程。 这些数据可能来自各种来源&#xff0c;例如社交媒体…

一文速通calcite结合flink理解SQL从文本变成执行计划详细过程

文章目录 你可以学到啥测试代码背景知识SQL转变流程图问题 你可以学到啥 SQL如何一步步变成执行计划的有哪些优化器&#xff0c;哪些优化规则calcite 和flink 如何结合的 测试代码 EnvironmentSettings settings EnvironmentSettings.inBatchMode(); TableEnvironment tabl…

Shein西班牙开放平台模式广受市场欢迎,Shein适合卖什么产品?

Shein是一家专注于女性快时尚的跨境B2C互联网企业&#xff0c;主要面向欧美、中东等消费市场。经过海外十余年的发展&#xff0c;Shein在全球积累了数量庞大且仍在高速增长的广泛用户基础。目前Shein已开放自营商家及平台卖家两大合作模式&#xff0c;通过入驻Shein平台&#x…

23ai DGPDB,Oracle资源池战略的最后一块拼图

Oracle对资源池是有执念的&#xff01; 在我看来&#xff0c;这种执念一方面是应用架构的微服务化&#xff0c;数据库被拆分的越来越小&#xff0c;而服务器的硬件能力是不断提升的&#xff0c;CPU核心数、内存和存储的容量都按照摩尔定律在不断增加&#xff0c;这就使得数据库…