在我们的一个项目中,验证用户名和手机号是否已经存在到Mysql数据库中,这是一个很有必要的操作。
我们使用的是ajax进行此操作。
首先 我们来介绍一下ajax
ajax的介绍
我们的普通请求是会伴随着整个页面一起提交,特征就是页面重置,页面刷新,许多静态资源是不需要伴随着刷新的,甚至刷新的时候会阻塞整个服务。
缺点:
造成用户的体验特别差。
请求内容和响应的内容冗余。
基于上面的问题,我们的ajax就出现了
ajax的优点:
ajax可以发送局部的请求,页面的整体不会刷新,页面局部刷新。
ajax可以发送一个异步请求,请求的过程中不会阻塞整个服务。
后端视图代码的实现
from django.views import View
from django.http import HttpReponse,JsonReponse
class UsernameCount(View):
def get(self,request,username):
count = User.objects.filter(username=username).count()
return JsonResponse({"code":"","error_message":"","count":count})
前端代码实现
methods:{
check_username(){
let re = /^[a-zA-Z0-9_-]{5,20}$/
if(re.test(this.username){
//匹配成功
this.error_username = false
}else{
this.error_username = true
this.error_username_message = "请输入正确长度的用户名"
}
//通过axios验证用户名是否存在
if(this.error_username = false){
let url = "/users/"+ this.username+ "/count/"
axios.get(url,{
responseType:"json"
})
//请求成功的处理
.then(response =>{
if(response.data.count == 1){
this.error_username = true
this.error_username_message = "用户名已经存在"
}
})
.catch(error =>{
console.log(error.response)
})
}
}
}
这只是第一种方法,还有一种方法是通过form表单的方式进行验证,form表单的方式比较来说,简单一点
方法二 form表单 验证
from django import forms
form .models import User
class UsersForm(forms.Form):
username = forms.CharField(max_length=20,min_length=5)
password = forms.CharField(max_length=20,min_length=8)
password2 = forms.CharField(max_length=20,min_length=8)
mobile = forms.CharField(max_length=11,min_length=11)
#验证用户名是否存在
def clean_username(self):
username = self.cleaned_data.get("username")
username_exist = User.objects.filter(username=username).exists()
if username_exist:
raise forms.ValidationError("用户名已经存在")
return username