Django自带auth_user表操作:

views.py

from django.contrib  import  auth#引入auth模块

from django.contrib.auth.models import User # auth应用中引入User类

(1)用户注册,添加记录(create_use普通用户,create_superuser超级用户)

# 注册

def register(request):

if request.method == 'GET':

register_obj = RegisterForm()

return render(request, 'register.html', {'register_obj': register_obj})

elif request.method == 'POST':

data = request.POST

        register_obj = RegisterForm(data)

if register_obj.is_valid():

user_obj = register_obj.cleaned_data

print(user_obj)

username = user_obj.get('name')

password = user_obj.get('password')

#通过auth模块,进行新用户注册,使用User表创建新用户(create_use普通用户,create_superuser超级用户)

if not User.objects.filter(username=username).exists():

new_obj = User.objects.create_user(username=username, password=password)

print(f'新用户{username}注册成功!')

return redirect('login')

else:

register_obj.add_error('name', '用户名已存在!')

return render(request, 'register.html', {'register_obj': register_obj})

else:

return render(request, 'register.html', {'register_obj': register_obj})

(2)登录校验(auth.authenticate(username=username, password=password)))

# 登录

def login(request):

if request.method == 'GET':

return render(request, 'login.html')

elif request.method == 'POST':

        username = request.POST.get('username')

password = request.POST.get('password')

        # 调用auth.authenticate()方法进行登录校验

user_obj = auth.authenticate(username=username, password=password)

print(user_obj)

if user_obj:

#校验成功,调用auth.loginrequest, user_obj方法:

①执行和session一样操作(创建随机sessionid;加密添加sesion表;写入cookie)

②自动在request对象添加一个属性user,在后续身份认证直接调用request.user.is_authenticated时自动判断是否登录

auth.login(request, user_obj)

return JsonResponse({'status': 1, 'url': reverse('index')})

else:

return JsonResponse({'status': 0, 'url': ''})

(3)访问认证(request.user.is_authenticated)

def index(request):

if request.user.is_authenticated:#调用request.useris_authenticated伪方法进行认证

print(request.user)#request.user就是当前用户对象,打印结果为用户名称

if request.method == 'GET':

return render(request, 'index.html')

else:

return redirect('login')

(4)退出登录(auth.logout(request))

def logout(request):

auth.logout(request)#调用 auth.logout(request)方法,类似session的request.session.flush()同时删除session表记录和cookie

return redirect('login')

(5)修改密码(request.user.check_password(),request.user.set_password(),request.user.save())

def reset_psd(request):

if request.user.is_authenticated:

if request.method == 'GET':

return render(request, 'reset_psd.html')

elif request.method == 'POST':

old_password = request.POST.get('old_password')

new_password = request.POST.get('new_password')

r_new_password = request.POST.get('r_new_password')

# ret=request.user.check_password(old_password)

            # print(ret)

            if request.user.check_password(old_password):#调用request.user.check_password(old_password)判断原密码是否正确

if new_password == r_new_password:

request.user.set_password(new_password)#调用request.user.set_password(new_password设置新密码

request.user.save()#调用request.user.save()进行保存更新

return JsonResponse({'status': True, 'info': '操作成功!', 'url': reverse('index')})

else:

return JsonResponse({'status': False, 'info': '两次新密码不一致!', 'url': ''})

else:

return JsonResponse({'status': False, 'info': '操作失败:原密码输入有误!', 'url': ''})

return JsonResponse({'status': False, 'info': '操作失败!', 'url': ''})

else:

return redirect('login')

Django认证系统之自带auth_user表操作的更多相关文章

  1. Django认证系统auth认证

    使用Django认证系统auth认证 auth认证系统可以处理范围非常广泛的任务,且具有一套细致的密码和权限实现.对于需要与默认配置不同需求的项目,Django支持扩展和自定义认证;会将用户信息写入到 ...

  2. 自定义Django认证系统的技术方案

    Django已经提供了开箱即用的认证系统,但是可能并不满足我们的个性化需求.自定义认证系统需要知道哪些地方可以扩展,哪些地方可以替换.本文就来介绍自定义Django认证系统的相关技术细节. 自定义认证 ...

  3. django认证系统 Authentication

    Django自带一个用户认证系统,用于处理用户账户.群组.许可和基于cookie的用户会话. Django的认证系统包含了身份验证和权限管理两部分.简单地说,身份验证用于核实某个用户是否合法,权限管理 ...

  4. Django认证系统并不鸡肋反而很重要

    在使用django-admin startproject创建项目后,Django就默认安装了一个采用session实现的认证系统.这是Django相比于其他框架的一大特点:自带认证系统,开箱即用.有人 ...

  5. django 认证系统--3

    WEB request中的认证 django使用sessions和middleware和reqeust对象联系在一起 它们通过给每一个reqeust请求添加一个request.user属性来代表当前用 ...

  6. django认证系统-user对象(创建,改密,认证)

    User对象 User对象是认证系统的核心.它们通常表示与你的站点进行交互的用户,并用于启用限制访问.注册用户信息和关联内容给创建者等.在Django的认证框架中只存在一种类型的用户,因此诸如'sup ...

  7. django 认证系统--1

    django的认证系统提供认证和授权两种功能 认证系统包括如下部分: 1.Users 2.Permissions 主要是以 YES/NO 的形式反映一个用户是否能够做某事 3.Groups:就是对多个 ...

  8. Django认证系统实现的web页面

    结合数据库.ajax.js.Djangoform表单和认证系统的web页面 一:数据模块 扩展了Django中的user表,增加了自定义的字段 from django.db import models ...

  9. django 认证系统--2

    使用django的认证系统 User 对象 User是认证系统的核心.典型代表是用户和你的站点进行交互还有限制访问.注册用户等等.django认证框架中,只存在一个User类,像'superuser' ...

随机推荐

  1. /proc/[pid]/status

    http://man7.org/linux/man-pages/man5/proc.5.html /proc/[pid]/status Provides much of the information ...

  2. Netty(三):IdleStateHandler源码解析

    IdleStateHandler是Netty为我们提供的检测连接有效性的处理器,一共有读空闲,写空闲,读/写空闲三种监测机制. 将其添加到我们的ChannelPipline中,便可以用来检测空闲. 先 ...

  3. BeanDefinition源码解析

    我们知道BeanDefintion定义了Bean在IoC容器内的基本数据结构.在学习IoC之前先了解BeanDefition对我们理解IoC容器是有帮助的. 首先BeanDefinition是一个接口 ...

  4. Linux下实现文件共享配置[samba]

    Linux下实现文件共享配置[samba] 第一步:安装samba软件 1.命令:rpm –q samba #查询是否已安装sambayum install samba #使用yum源安装samba, ...

  5. FileZilla更新服务器文件后浏览器没有刷新的一种常见情况

    一.问题描述 在使用FileZilla更新服务器文件时,常出现的一种情况是: 刷新浏览器,发现该网页并未更新.但是检查网页源代码可以发现文件已经更新了,这就奇怪了,是服务器出了问题吗?还是FileZi ...

  6. Computational Geometry

    矩形重叠 看过某司一道笔试题:给\(n\)个矩形左下和右上坐标(不能斜放),求重叠最多处矩形个数. 这道题本身不难:可以遍历所有矩形边界组成的点,计算该点被多少矩形包围,从而选出最大值. 由此引申出一 ...

  7. 数据库SQL语言从入门到精通--Part 1--SQL语言概述

    数据库从入门到精通合集(超详细,学习数据库必看) 一.SQL概述 关系数据库标准语言SQL(结构化查询语言). 结构化查询语言(Structured Query Language)简称SQL,是一种特 ...

  8. CF--思维练习--CodeForces - 219C Color Stripe (思维)

    ACM思维题训练集合 A colored stripe is represented by a horizontal row of n square cells, each cell is paine ...

  9. python安装pycrypto库

    使用pycharm时安装pycrypto库,一直安装不上,提示安装成功,退出去一看,依旧没有 最后选择了pip安装,但一直报错(Microsoft Visual C++ 9.0 is required ...

  10. vue-cli3使用全局scss

    在开发项目的时候,经常会出现多个元素样式相同,比如颜色相同.这里就需要我们设置公共样式,方便后期调试 一配置方法 1.在src/assets/styles目录下创建文件variable.scss // ...