项目(一)验证用户名是否存在

1,258 阅读1分钟

在我们的一个项目中,验证用户名和手机号是否已经存在到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