Django--AJAX

浏览器想网站发送请求时的方式:
GET和POST
特点:页面刷新

除此之外,也可以基于Ajax向后台发送请求(偷偷的发送请求)

依赖jQuery
编写ajax代码

$.ajax({
url:“发送的地址”,
type:“get”,
data:{
n1:123,
n2:456
},
success:function(res){
console.log(res);
}
})

案例:
设置一个按钮实现ajax
在这里插入图片描述url 对应的是往哪里地址发请求
type 表示哪个请求方式
data 表示发送的数据

在这里插入图片描述如果想发POST请求,由于crsf token 认证的缘故,所以可以装饰器免除csrf token认证
在这里插入图片描述绑定事件还可以通过jQUEry的方式来绑定事件
在这里插入图片描述

ajax请求的返回值

一般都会返回JSON格式。

即后端返回到前端的一般都是返回的JSON格式
在这里插入图片描述json.dumps 可以将字典类型转换为json格式的字符串类型
在这里插入图片描述
Django中还有JsonResponse 可以内部直接给json.dumps
在这里插入图片描述
前端拿到的字符串需要转换成一个对象,方便取出里面的值

在这里插入图片描述

在这里插入图片描述

实例2,通过Ajax获得输入的值

通过Jquery获得标签的值

$(“#txtUser(对应标签的id)”).val(),

在这里插入图片描述效果如下:
在这里插入图片描述
在这里插入图片描述
如果输入框比较多的话:

可以通过打包表单的数据 $(“#form3(对应表单的id)”).serialize()

这样可以将对应id表单的所有的数据打包发送到后台

在这里插入图片描述注意这时候form表单里面是name ,而不是id。
后端获取到信息
在这里插入图片描述

####案例:任务列表#####

1.设计好任务数据库
在这里插入图片描述
2.设置对应的url与对应的modelform在这里插入图片描述这里的TaskModelForm是继承了BootStrapModelForm,将每个字段插件设置样式
在这里插入图片描述
再将字段传到前端页面
在这里插入图片描述注意,如果使用AJAX就用不到 method=“post”
在这里插入图片描述同样为前端的form 与button 设置id

在这里插入图片描述
设置对应的ajax在这里插入图片描述
对应的编写url方法在这里插入图片描述再对用户传来的数据进行校验
方法1:Modelform进行校验

在这里插入图片描述
注意:这里使用的是Ajax,所以不能再使用重定向redirect

将反馈的信息通过Ajax在页面显示
在这里插入图片描述
在这里插入图片描述这里可以看到传过来的error是一个字典,里面的键是对应的字段名(name)与报错的值

所以可以通过.each字段名进行循环,然后提取出每个字段的name
因为每个输入框的id为id_+name
在这里插入图片描述所以可以通过拼接将错误信息,通过 $(“#id_” + name).next() 将错误信息出现在id_name()下面
错误信息的内容就 循环过来的值,这里用data表示,所以
在这里插入图片描述通过Ajax将错误的信息出现在对应的输入框下面。

为了解决输入框的上一次的错误信息,再这一次更正后,上次的错误信息不再显示,所以采用为错误信息设置class
然后通过在每次触发事件时候都将上次的错误信息进行置空
在这里插入图片描述
在这里插入图片描述效果如下:
在这里插入图片描述
在下面添加相对应的任务列表

在这里插入图片描述效果如下:
在这里插入图片描述
为了实现在添加的时候完成自动刷新页面的功能
通过JS可以实现页面的刷新

在这里插入图片描述
在下面添加分页:
先添加pagination文件,
在这里插入图片描述
将对应的queryset变成参数进行实例化,最后再在传输数据的字典中分完页的数据以及生成页码
在这里插入图片描述
最后再对应的html中添加对应的ul标签
在这里插入图片描述
在这里插入图片描述

对话框的模式实现AJAX

问题:不管怎样点提交按钮,在前端也未显示错误信息?活着错误信息是一闪而过?
可能的原因是 submit需要有表单时,提交时才会带数据。而button默认是不提交任何数据。
所以在使用Ajax的时候需要让button的类型设置为button,防止出错
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值