• Django 用户名唯一性校验(ajax)


    实现用户名唯一性校验

    过程

    #新创建工程 test35
    #新创建应用 stu
    # 修改 settings.py
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'stu'
    ]
    #新创建模型 Student,  models.py ,并在库中新增加用户名 zhangsan 、lisi
    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    from django.db import models
    
    # Create your models here.
    
    class Student(models.Model):
        sno = models.AutoField(primary_key=True)
        sname = models.CharField(max_length=30,unique=True)
    
    
    #创建迁移文件
    python manage.py makemigrations  stu
    python manage.py migrate
    
    #新增加 url  test35/urls.py
    url(r'^student/',include('stu.urls'))
    # 新增加 stu/urls.py ,添加子路由 url(r'^only/$',views.onlyView), 
    #coding=utf-8
    
    import views
    from django.conf.urls import url
    urlpatterns = [
        url(r'^only/$',views.onlyView),
        url(r'isExist/$',views.isExist)
    ]
    
    # 编辑 views.py
    
    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    from django.http import JsonResponse
    from django.shortcuts import render
    from .models import *
    
    # Create your views here.
    def onlyView(request):
        return render(request,'only.html')
    
    
    def isExist(request):
        #接收请求参数
        uname = request.GET.get('uname','')
        #判断数据库当中是否存在
        stuList = Student.objects.filter(sname=uname)
    
        if stuList:
            return JsonResponse({'flag':True})
        return JsonResponse({'flag':False})
    
    
    #新增加 template/only,html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.min.js"></script>
        <script>
            //onblur:失去焦点 当用户离开输入字段时对其进行验证
            //onfocus:获得焦点
            function checkUname() {
                //获取文本框内容
                var uname = $('#uname').val();
                //非空校验
                if (uname.length==0){
                    $('#unameSpan').html('*');
                    $('#unameSpan').css('color','red');
                }else {
                    //判断唯一性 发送ajax 请求  会将views.py中  'flag':True 或者 flag':False 传回 result;
                    $.get('/student/isExist/',{'uname':uname},function (result) {
                        r = result.flag;
                        //根据服务器端的响应信息进行信息更新
                        if (r){
                            $('#unameSpan').html('此用户名太受欢迎了,请换一个吧~');
                            $('#unameSpan').css('color','red');
                        }else {
                            $('#unameSpan').html('√ 可以使用');
                            $('#unameSpan').css('color','green');
                        }
    
                    })
    
                }
            }
        </script>
    </head>
    <body>
    用户名: <input type="text" name="uname" id="uname" onblur="checkUname()"/><span id="unameSpan"></span>
    </body>
    </html>
    
    #效果 http://127.0.0.1:8000/student/only/  
    1 .输入框未填写内容则显示红色 *  号
    2. 输入框填写内容和数据库中用户名进行比较,如果匹配则显示    此用户名太受欢迎了,请换一个吧~   ,红色字体
    3.输入框填写内容和数据库中用户名进行比较,如果不匹配则显示   √ 可以使用   ,绿色字体
    
    


  • 相关阅读:
    Different ways how to escape an XML string in C#
    __VIEWSTATE
    Git for Computer Scientists
    关于SQL Server死锁
    20个开源项目托管站点
    Understanding Host Headers in IIS
    开发与研发:区别很大
    Linux 0.12 “轮子”任务调度图示
    RabbitMQ学习第二记:工作队列的两种分发方式,轮询分发(Roundrobin)和 公平分发(Fair dispatch)
    ResultSetMetaData中getColumnLabel和getColumnName的区别
  • 原文地址:https://www.cnblogs.com/lixinliang/p/14144991.html
Copyright © 2020-2023  润新知