Django项目之电商购物商城 -- 校验用户输入密码是否合法

本文主要是介绍Django项目之电商购物商城 -- 校验用户输入密码是否合法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Django项目之电商购物商城 – 校验用户输入密码是否合法

需要开发文档和前端资料的可私聊

一. 创建用户逻辑操作

1. 创建用户app – users

python manage.py startapp users

2.注册app

'users.apps.UsersConfig',

3. 创建视图

from django.shortcuts import render
from django.views import Viewclass RegisterView(View):def get(self , request):return render(request , 'register.html')def post(self , request):pass

4. 分发路由

from django.urls import path
from users import views
urlpatterns = [path('register/' , views.RegisterView.as_view())
]

注册界面展示

在这里插入图片描述

二. 创建用户模型类

  1. 创建用户模型类 , 继承Django原有user表

    from django.db import models
    from django.contrib.auth.models import AbstractUser
    # Create your models here.class User(AbstractUser):# 创建手机号字段mobile = models.IntegerField(max_length=11 , unique=True)class Meta:db_table = 'User'
  2. 修改配置

    AUTH_USER_MODEL = 'user.User'
    
  3. 迁移数据库

    python manage.py makemigrations
    python manage.py migrate
    

三. 接受用户数据进行校验

1. 前端校验
let vm = new Vue({// 通过ID选择器找到绑定的html标签的内容el : '#app',// 修改vue的模板语法delimiters : ['[[',']]'],data : {// v-modelusername:'',password:'',password2:'',mobile:'',allow:'',image_code_url:'',uuid:'',image_code:'',sms_code:'',sms_code_tip:'获取短信验证码',// 该变量作为标记,默认允许访问sand_flag:false,// v-showerror_name:false,error_password:false,error_password2:false,error_mobile:false,error_allow:false,error_image_code:false,error_sms_code:false,// 自定义错误信息error_name_message:'',error_sms_code_message:'',},// 这个方法会在页面加载之后被调用mounted(){this.generate_image_code();},// 定义事件方法methods:{// 校验短信验证码check_sms_code() {if(this.sms_code.length != 5){this.error_sms_code = true;}  else {this.error_sms_code = false;}},//发送短信验证码send_sms_code() {// 判断作为标记的变量是否允许访问if (this.sand_flag == true ){// 当标记为true时,说明短时间内已经发送请求了,不允许访问停止方法。return;}// 标记允许访问,可以实现发送Ajax请求// 修改标记为不允许访问的状态this.sand_flag = true;let url = '/ver/sms_code/'+this.mobile+'/?uuid='+this.uuid+'&image_code='+this.image_code;axios.get(url ,{responseType: 'json'})// 请求成功.then(response => {console.log(response.data.errsg)// 实现发送短信验证码的倒计时if (response.data.code == '0'){let number = 60;console.log(123)let t = setInterval(() => {console.log(4536)// 倒计时结束if(number == 1){// 倒计时结束// 停止回调函数的执行clearInterval(t)this.sms_code_tip = '获取短信验证码';// 倒计时结束之后,重新生成图片验证码this.generate_image_code();// 倒计时结束,把标记修改为允许访问的状态this.sand_flag = false;} else {number -= 1 ;this.sms_code_tip = number +'秒';}} , 1000)} else {// 短信验证码发送失败this.error_sms_code_message = response.data.errsg;this.error_sms_code = true;}// 把标记修改为允许访问的状态this.sand_flag = false;})// 请求失败.catch(error =>{console.log(error.response)// 把标记修改为允许访问的状态this.sand_flag = false;})},// 校验图片验证码check_image_code(){if(this.image_code.length != 4){this.error_image_code = true;}  else {this.error_image_code = false;}},// 生成 图片验证码的urlgenerate_image_code(){// 通过生成uuid来对用户进行标识this.uuid = generateUUID()this.image_code_url = '/ver/image_code/'+this.uuid+'/'},// 校验用户名check_username(){// 定义用户名的规则let re = /^[A-Za-z0-9_]{5,15}$/;// 判断接收到的数据是否符合条件if(re.test(this.username)){// 数据合法this.error_name = false;} else {// 用户名不合法this.error_name = true;this.error_name_message = "用户名不合法 , 应当使用A-Za-z0-9_"}// 判断用户是否重复// 前提保证用户名合法if(this.error_name == false){// 发送ajax请求let url = '/user/username/'+ this.username +'/count/';axios.get(url , {responseType :'json'})// 请求成功.then(response => {// 获取后端传递过来的数据 response.dataif(response.data.count == 1){// 用户已存在this.error_name_message = '用户名已存在';this.error_name = true;} else {this.error_name = false;}})// 请求失败.catch(error =>{console.log(error.response)})}},// 校验密码check_password(){// 密码中合法的字符let re=/^[0-9a-zA-Z]{6,20}$/;if(re.test(this.password)){// 符合要求 , 密码字符合法this.error_password = false;} else {// 密码不合法 ,显示错误信息this.error_password = true;}},// 校验两次密码是否一致check_password2(){if(this.password2 == this.password){this.error_password2 = false;} else {this.error_password2 = true;}},// 校验手机号check_mobile(){let re =/^1[3-9]\d{9}$/;if(re.test(this.mobile)){this.error_mobile = false;} else {this.error_mobile = true;}},// 校验勾选框是否勾选check_allow(){if(this.allow){this.error_allow = false;} else {this.error_allow = true;}},// 校验表单中数据是否全部合格on_submit(){// 调用所有校验数据的方法this.check_username();this.check_password();this.check_password2();this.check_mobile();this.check_allow();// 判断error的对应值是否为true , 如果其中有一个为true则限制提交if(this.error_name == true || this.error_password == true ||this.error_password2 == true || this.error_mobile == true || this.error_allow == true){// 禁止表单提交window.event.returnValue = false;}},}})
2. 后端校验数据是否合法, 两次输入密码是否一致 – 定义forms表单
  1. 在当前app中创建forms模块

    from django import formsclass RegisterForms(forms.Form):username = forms.CharField(min_length=5,max_length=15,error_messages={"min_length":"用户名太短","max_length":"用户名太长","required":"用户名不允许为空"})password = forms.CharField(min_length=6, max_length=20,error_messages={"min_length": "密码名太短","max_length": "密码名太长","required": "密码不允许为空"})password2 = forms.CharField(min_length=6, max_length=20,error_messages={"min_length": "用户名太短","max_length": "用户名太长","required": "用户名不允许为空"})mobile = forms.IntegerField(min_length=11, max_length=11,error_messages={"min_length": "手机号不合法","max_length": "手机号不合法","required": "手机号不允许为空"})# 校验两次输入是否一致def clean(self):clean_data = super(RegisterForms, self).clean()pw = clean_data.get('password')pw2 = clean_data.get('password2')if pw != pw2:raise forms.ValidationErrorreturn clean_data
    
  2. 将forms组件传入视图进行数据校验

    class RegisterView(View):def get(self , request):return render(request , 'register.html')def post(self , request):# 将用户数据传入forms组件进行校验register_forms = RegisterForms(request.POST)# 这里先返回httpresponse进行测试if register_forms.is_valid():return HttpResponse("注册成功")return HttpResponse("注册失败")
    

    下节介绍用户名重复校验 , 图形验证码制作 , 以及短信验证码生成

这篇关于Django项目之电商购物商城 -- 校验用户输入密码是否合法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

MySQL修改密码的四种实现方式

《MySQL修改密码的四种实现方式》文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包... 目录mysql修改密码四种方式一、set password命令二、使用mysqladmin三、修改u

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

查询Oracle数据库表是否被锁的实现方式

《查询Oracle数据库表是否被锁的实现方式》本文介绍了查询Oracle数据库表是否被锁的方法,包括查询锁表的会话、人员信息,根据object_id查询表名,以及根据会话ID查询和停止本地进程,同时,... 目录查询oracle数据库表是否被锁1、查询锁表的会话、人员等信息2、根据 object_id查询被

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo