Django以ajax方式提交form

view.py

def ajax(request):
    if request.method == 'GET':
        obj = AjaxForm()
        return render(request,'ajax.html',{'obj':obj})
    else:
        ret = {'status':'no','message':None}
        import json
        obj=AjaxForm(request.POST)
        if obj.is_valid(): # 这里开始做的数据验证
            ret['status'] = 'yes'
            print(obj.cleaned_data)
            # 跳转,ajax方式提交不会直接跳转,需交给js处理
            # return redirect('http://www.baidu.com')
            return HttpResponse(json.dumps(ret))
        else:
            print(obj.errors)  # json.dumps里传python的基本数据类型,ErrorDict是继承dict的
            print(type(obj.errors)) # <class 'django.forms.utils.ErrorDict'>
            ret['message'] = obj.errors
            # 错误的信息显示在页面上
            return HttpResponse(json.dumps(ret))

form类

html

<body>
<form id="fm" action="/ajax/" method="post" novalidate>
    {% csrf_token %}
    <p>{{ obj.username.label }}:{{ obj.username }}</p>
    <p>{{ obj.user_id.label }}:{{ obj.user_id }}</p>
    <input type="button" value="Ajax提交" id="btn">
</form>
<script src="/static/js/jquery-3.3.1.js"></script>'
<script>
    $(function () {
        $('#btn').click(function () {
            $.ajax({
                url:'/ajax/',
                type:'POST',
                data:$('#fm').serialize(),
                dataType:'JSON',
                success:function (arg) {
                    //arg:需包含状态信息,错误信息
                    if(arg.status == 'yes'){ // 跳转
                        window.location.href="http://www.baidu.com"
                    }
                    console.log(arg)
                }
            })
        })
    })
</script>
</body>

 

转载于:https://www.cnblogs.com/zq8421/p/10439299.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值