• day112-django-Form组件-ajax提交给后台的Form验证


    #ajax提交,不需要刷新,就可以保留输入的信息,不因刷新而清空信息。
    #注意:username和password必须跟html里面的name=‘username’和name='password'一样。

    from
    django.shortcuts import render,HttpResponse from django.forms import Form,fields import json class LoginForm(Form): username = fields.CharField( min_length = 6, max_length = 16, required = True, error_messages={ 'min_length':'至少6位', 'max_length':'至多16位', 'required':'不能为空' } ) password = fields.CharField(min_length=6,required=True) def ajax_login(request): if request.method == 'GET': return render(request,'ajax_login.html') else: ret = {'status':True,'msg':None} obj = LoginForm(request.POST) result = obj.is_valid() if result: print(obj.cleaned_data) else: ret['status'] = False ret['msg'] = obj.errors return HttpResponse(json.dumps(ret))
    <body>
    <form>
        {% csrf_token %}
        <p>用户名:
            <input type="text" name="username">
        </p>
        <p>密码:
            <input type="password" name="password">
        </p>
        <p>
            <input type="button" value="ajax提交">
        </p>
    </form>
    
    <script src="../static/jquery-3.4.1.min.js"></script>
    <script>
        $('input[type="button"]').on('click',function () {
            $('.c1').remove();//删除所有类名是c1的标签
            $.ajax({
                url:'/ajax_login',
                type:'POST',
                data:$('form').serialize(),//获取form的所有信息,它是字符串,以前这里是字典也是转为字符串才发给浏览器。
                dataType:'JSON',
                success:function (arg) {
                    if(arg.status){}
                    else{
                        //arg.msg是obj.errors,如果用户输入的username和password都错了,key就是username和password
                        $.each(arg.msg,function (key,value) {
                            var tag = document.createElement('span');
                            tag.innerHTML = value[0];
                            tag.className = 'c1';
                            $(tag).css('color','red');
                            //使用字符串拼接,否则key显示的是变量
                            $('form').find('input[name='+key+']').after(tag)
                        })
                    }
                }
            })
        })
    </script>
    </body>

  • 相关阅读:
    【Q&A】pytorch中的worker如何工作的
    【教程】opencv-python+yolov3实现目标检测
    ubuntu使用scrcpy手机投屏-免费神器scrcpy【介绍、安装、使用】
    【从踩坑到教程】win10下ubuntu18.04双系统UEFI模式安装、Nvidia驱动安装
    Python引用与目录结构
    交流总结
    转载-趣图展现程序员职业生涯的11个阶段
    转载-在家工作,10招助你效率、生活两不误
    转载-新年寄望:从小做起,活在当下
    转载-成为明星程序员的10个提示
  • 原文地址:https://www.cnblogs.com/python-daxiong/p/12832108.html
Copyright © 2020-2023  润新知