Django用户认证: 利用Django Auth模块实现用户注册、登录与登出

这篇具有很好参考价值的文章主要介绍了Django用户认证: 利用Django Auth模块实现用户注册、登录与登出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Django用户认证: 利用Django Auth模块实现用户注册、登录与登出

用户登录注册属于用户认证的一部分,Django内置了一套用户认证体系,使用起来比较方便,而且支持用户定制和拓展,足以满足任何复杂的业务需求。



1 Django 用户管理机制

Django框架中,用户权限管理被划分为三个层次:

  • 用户:系统使用者,拥有自己的权限。可被一个或多个用户组包含。
  • 用户组:对用户进行分类。同一用户组拥有相同的权限。
  • 权限:用于约束用户行为。Django中一个完整的权限除权限本身外,还包括用户和对象,即什么用户对什么对象具有什么样的权限。

2 Auth模块

Auth模块是Django框架内置的权限管理模块。利用Auth模块可以实现用户身份认证、用户组和权限管理。

2.1 配置权限管理模块

在项目配置文件settings.py中加入以下代码:

INSTALLED_APPS = [
	'django.contrib.admin',
	'django.contrib.auth', # 权限管理模块
	'django.contrib.contenttypes', # 内容管理模块
]

2.2 Auth模块中的用户模型 用户组模型 用户权限模型

模块名称 说明
Django.contrib.auth.models.User Auth模块中的用户模型
Django.contrib.auth.models.Group Auth模块中的组模型
Django.contrib.auth.models.Permission Auth模块中的权限模型

3 Django自带的用户模型(User)介绍

3.1 User模型内置字段介绍

用户模型是Django用户认证的核心,用户模型内置了多个字段可直接使用。

内置字段名称 说明 字段类型
id 数据库主键 int
password 密码 varchar
last_login 最近登录时间 datetime
is_superuser 是否超级管理员 tinyint
user_name 用户账号 varchar
email 邮箱 varchar
is_staff 是否登录admin后台 tinyint
is_active 是否激活 tinyint
date_joined 账号创建时间 datetime

3.2 User模型内置方法

内置方法名称 说明
authenticate(username, password) 用于用户认证。认证成功,则返回一个User对象
login(HttpRequest, user) 用于用户登录。user参数是经过认证的User对象。登录成功后将用户身份信息记录到请求的会话对象中存储。后台使用request.user可获取当前登录的用户对象。如果未登录成功,则request.user得到的是一个匿名用户对象。
is_authenticated() 判断当前用户是否经过认证
logout(request) 清除当前请求,注销会话
create_user() 创建新用户,至少提供用户名和密码
set_password(password) 修改密码
check_password(password) 检查密码是否正确

上述内置方法,可以在用户校验时为我们提供巨大的方便。
用户创建项目和应用后,执行完数据迁移,后台会生成一套auth开头的用户权限数据表。


4 基于User模型的功能开发

4.1 用户注册

在视图文件views.py中:

# # 导入模块
from django.shortcuts import render, redirect
from django.http import HttpResponse, JsonResponse
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, logout

def register(request):
	if request.method == 'GET':
		return render(
			request,
			'basic/register.html'
		)
	
	elif request.method == 'POST':
		# 获取参数
		user_name = request.POST.get('username', '')
		pwd = request.POST.get('password', '')
		
		# 用户已存在
		if User.objects.filter(username=user_name):
			return JsonResponse({
				'code': 200,
				'msg': '用户已存在'
			})
		# 用户不存在
		else:
			# 使用User内置方法创建用户
			user = User.objects.create_user(
				username=user_name,
				password=pwd,
				email='123@qq.com',
				is_staff=1,
				is_active=1,
				is_superuser=0
			)
			
			return JsonResponse({
				'code': 200,
				'msg': '用户注册成功'
			})
	
	else:
		return JsonResponse({
			'code': 403,
			'msg': '被禁止的请求'
		})

4.2 用户登录

在视图文件views.py中:文章来源地址https://www.toymoban.com/news/detail-419510.html

"""此处导入的模块和注册是一样的"""

def login(request):
	if request.method == 'GET':
		return render(
			request,
			'basic/login.html',
		)
	
	elif request.method == 'POST':
		# 获取参数
		user_name = request.POST.get('username', '')
		pwd = request.POST.get('password', '')
		
		# 用户已存在
		if User.objects.filter(username=user_name):
			# 使用内置方法验证
			user = authenticate(username=user_name, password=pwd)
			
			# 验证通过
			if user:
				# 用户已激活
				if user.is_active:
					return JsonResponse({
						'code': 200,
						'msg': '登录成功'
					})
				# 未激活
				else:
					return JsonResponse({
						'code': 200,
						'msg': '用户未激活'
					})
			
			# 验证失败
			else:
				return JsonResponse({
					'code': 403,
					'msg': '用户认证失败'
				})
		
		# 用户不存在
		else:
			return redirect('/basic/register')

4.3 用户登出

"""此处导入的模块和注册是一样的"""
def logout(request):
	logout(request)
	return redirect('/basuc/login')

到了这里,关于Django用户认证: 利用Django Auth模块实现用户注册、登录与登出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • “Layui用户认证:实现安全高效的登录和注册体验”

    layui(谐音:类 UI) 是一套开源的 Web UI 解决方案,采用自身经典的模块化规范,并遵循原生 HTML/CSS/JS 的开发方式,极易上手,拿来即用。其风格简约轻盈,而组件优雅丰盈,从源代码到使用方法的每一处细节都经过精心雕琢,非常适合网页界面的快速开发。layui 区别于那些基

    2024年02月16日
    浏览(43)
  • 使用Django Rest Framework设计与实现用户注册API

    在现代Web应用开发中,RESTful API已成为前后端分离架构中的关键组件。Django Rest Framework (DRF) 是一款基于Django的优秀库,提供了丰富的工具和接口,极大地简化了RESTful API的设计与实现。本文将以用户注册功能为例,展示如何运用DRF构建一个完整的API端点,包括数据验证、模型

    2024年04月25日
    浏览(33)
  • Django实现用户注册登录,表单提交后跳转网页(学习笔记)

    效果图如下:   使用命令提示符,进入想存放项目的目录: 在项目coco目录下新建static文件夹,用于存放网页文件的css,js,imgs 在coco_app目录下新建文件夹templates,用于存放需要用到的HTML网页 打开coco文件夹中的settings.py注册coco_app 引用templates 连接数据库,这里我用的MySQL数据

    2023年04月11日
    浏览(80)
  • Python Django的学生选课管理系统,实现多用户登录注册,可选课可评课

    学生选课管理系统是一个基于Python Django开发的教务管理系统,旨在提供方便快捷的选课服务和学籍管理功能。该系统分为教师端和学生端两个角色,为教师和学生提供了不同的功能和权限。 教师端功能: 教师可以登录系统后,进行课程管理、成绩录入和学生管理等操作。具

    2024年01月24日
    浏览(48)
  • Django用户注册和用户配置扩展

    本篇是在完成用户登录登出,密码修改功能后,扩展用户注册功能。 关于用户登录、注销、更改密码和重置密码。请查看 Django身份验证初试-CSDN博客 Django登录注销视图-CSDN博客 Django密码修改和重置视图-CSDN博客 创建一个表单,让用户输入用户名、真实姓名和密码。 编辑位于

    2024年01月17日
    浏览(45)
  • 网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(二)前后端实现用户的登录和注册功能【用户模块】

    1. 用户id 2. 用户名 3. 密码 4. 天梯积分 5. 总场数 6. 获胜场数 和数据库的数据一一对应 1. 连接数据库(application.yml连接数据库) 这个可以直接赋值代码 2. 创建UserMapper的Java接口(interface UserMapper) 创建接口,在UserMapper.xml实现 在model中创建 需要实现@Mapper注释 3. 创建UserMappe

    2024年02月13日
    浏览(48)
  • 软件著作权实名认证怎么做?【用户注册】如何进行用户注册?

    【用户注册】如何进行用户注册? 第一步:进入中国版权保护中心官网,点击右上角注册。中国版权保护中心 (ccopyright.com.cn)  第二步:进入用户注册页面,阅读用户协议,点击【同意并继续】按钮。 第三步:选择注册的账户身份。著作权人是个人点击个人,著作权人是公司

    2024年02月13日
    浏览(44)
  • Django实战项目-学习任务系统-用户注册

    接着上期代码框架,开发第2个功能,用户注册,在原有用户模型基础上,增加一个学生用户属性表,用来关联学生用户的各种属性值,这个属性表是参考网络小说里系统属性值设计的,方便直观了解用户的能力高低,等级以及积分值等信息。 第一步:编写第二个功能-用户注

    2024年02月07日
    浏览(41)
  • 【基于Django框架的在线教育平台开发-02】用户注册功能开发

    用户数据表如下所示: Field Type Extra id int Prime Key Auto Increment password varchar(128) last_login datetime(6) Allow Null is_superuser tinyint(1) username varchar(150) first_name varchar(150) last_name varchar(150) email varchar(254) is_staff tinyint(1) is_active tinyint(1) date_joined datetime(6) nick_name varchar(50) birthday date Allow Null

    2024年02月11日
    浏览(35)
  • Django基础入门:后台管理 超级用户 数据表注册操作③

    🏘️🏘️个人简介:以山河作礼。 🎖️🎖️: Python领域新星创作者,CSDN实力新星认证,阿里云社区专家博主 🎁🎁:Web全栈开发专栏:《Web全栈开发》免费专栏,欢迎阅读! 🎁🎁: 文章末尾扫描二维码可以加入粉丝交流群,不定期免费送书。 Django 的后台管理系统是非常出

    2024年02月11日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包