【Python-Django后端】用户注册通用逻辑,用户名、手机号重名检测,注册成功后状态保持!!!...

本文主要是介绍【Python-Django后端】用户注册通用逻辑,用户名、手机号重名检测,注册成功后状态保持!!!...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用户注册后端逻辑

1. 接收参数

username = request.POST.get('username')
password = request.POST.get('password')
password2 = request.POST.get('password2')
mobile = request.POST.get('mobile')
allow = request.POST.get('allow')

 

2. 校验参数

from django import http
import re# 判断参数是否齐全
if not all([username, password, password2, mobile, allow]):return http.HttpResponseBadRequest('缺少必传参数')
# 判断用户名是否是5-20个字符
if not re.match(r'^[a-zA-Z0-9_]{5,20}$', username):return http.HttpResponseBadRequest('请输入5-20个字符的用户名')
# 判断密码是否是8-20个数字
if not re.match(r'^[0-9A-Za-z]{8,20}$', password):return http.HttpResponseBadRequest('请输入8-20位的密码')
# 判断两次密码是否一致
if password != password2:return http.HttpResponseBadRequest('两次输入的密码不一致')
# 判断手机号是否合法
if not re.match(r'^1[3-9]\d{9}$', mobile):return http.HttpResponseBadRequest('请输入正确的手机号码')
# 判断是否勾选用户协议
if allow != 'on':return http.HttpResponseBadRequest('请勾选用户协议')

 这里校验的参数,前端已经校验过,如果此时参数还是出错,说明该请求是非正常渠道发送的,所以直接禁止掉。

3. 保存注册数据

from django.db import DatabaseError# 保存注册数据
try:User.objects.create_user(username=username, password=password, mobile=mobile)
except DatabaseError:return render(request, 'register.html', {'register_errmsg': '注册失败'})# 响应注册结果
return http.HttpResponse('注册成功,重定向到首页')

  

示例:重定向

from django.shortcuts import redirect
from django.urls import reverse# 响应注册结果
return redirect(reverse('contents:index'))

  

状态保持

1. login()方法介绍

  1. 状态保持:
    • 将通过认证的用户的唯一标识信息(比如:用户ID)写入到当前session会话中
  2. login()方法:
    • Django用户认证系统提供了 login() 方法
    • 封装了写入session的操作,帮助我们快速实现状态保持
  3. login()位置:

    • django.contrib.auth.__init__.py文件中

      login(request, user)

2. login()方法使用

# 保存注册数据
try:user = User.objects.create_user(username=username, password=password, mobile=mobile)
except DatabaseError:return render(request, 'register.html', {'register_errmsg': '注册失败'})# 实现状态保持
login(request, user)# 响应注册结果
return redirect(reverse('contents:index'))

  

 

用户名或手机号重复注册逻辑:

1.请求方式

 

选项方案
请求方法GET
请求地址/usernames/(?P<username>[a-zA-Z0-9_]{5,20})/count/

 

 

用户名重复注册后端逻辑(通过filter过滤是否有重名用户,count返回0或1,0说明没注册过,手机号重复注册逻辑相同)

from utils.response_code import RETCODEclass UsernameCountView(View):"""判断用户名是否重复注册"""def get(self, request, username):""":param request: 请求对象:param username: 用户名:return: JSON"""count = User.objects.filter(username=username).count()return http.JsonResponse({'code': RETCODE.OK, 'errmsg': 'OK', 'count': count})

  

 前端逻辑:

//检测用户名是否存在
if (this.error_username == false) {//拼接请求urllet url = '/usernames/' + this.username + '/count/';axios.get(url,{responseType: 'json'}).then(response => {//请求成功的判断if (response.data.count == 1) {this.error_username_message = '用户名已存在';this.error_username = true;} else {this.error_username = false;}}).catch(error => {//请求失败显示错误console.log(error.response);})
}

  

 

 

这篇关于【Python-Django后端】用户注册通用逻辑,用户名、手机号重名检测,注册成功后状态保持!!!...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1004885

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

hdu1565(状态压缩)

本人第一道ac的状态压缩dp,这题的数据非常水,很容易过 题意:在n*n的矩阵中选数字使得不存在任意两个数字相邻,求最大值 解题思路: 一、因为在1<<20中有很多状态是无效的,所以第一步是选择有效状态,存到cnt[]数组中 二、dp[i][j]表示到第i行的状态cnt[j]所能得到的最大值,状态转移方程dp[i][j] = max(dp[i][j],dp[i-1][k]) ,其中k满足c

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学