Django-(7)

内容概览

  • Ajax
  • 序列化

Ajax

ajax全称Asynchronous Javascript And XML(异步JavaScript和XML)
作用于从客户端给服务端发送消息
ajax是js自带的功能,不是新的语言,我们学习的是jQuery封装后的版本
ajax默认异步提交,局部刷新:当异步请求发出后,浏览器可以继续做其他事,不会影响页面的加载与用户的操作

基础语法
$.ajax({
	url: '',  // 控制页面提交的地址,默认为当前地址
	type: '',  // 控制请求方式,默认为get请求
	data: {},  // 提交的数据
	success: function(形参){  //后端返回数据时执行
		异步回调函数
	}
})
// 形参接收后端返回的数据,一般返回字符或JSON格式数据
数据编码格式

在这里插入图片描述
Content-Type:用于记录发送数据的编码格式
格式1:urlencoded
  数据格式:name=value,多个数据使用&符隔开
  django后端统一处理到request.POST中
格式2:formdata
  数据格式:没有编码无法查阅
  django后端会断自动将文件数据处理到request.FILES,普通数据处理到request.POST
格式3:application/json
  数据格式:json格式
  django后端不会处理,存放在request.body中自己处理(bytes类型)
  发送数据时要先转换为json格式数据

$.ajax({
url: '',
typr: 'post',
data: JSON.stringify(数据),
contentType: 'application/json'
success: function(){}
})

ps:所有数据接收后都会先存放在request.body中

ajax携带文件数据
$('#d1').cilck(function(){
	// 先创建内置对象
	let myFormData = new FormData();
	// 把需要发送的数据添加到对象中,第一个参数为K第二个参数为V
	myFormData.append('username', $('#d2').val())  // 普通数据
	myFormData.append('file', $('#d3')[0].files[0])  // 文件数据
	$.ajax({
		url: '',
		type: 'post',
		data: myFormData,  // 直接发送对象即可
		// 添加以下两行代码
		contentType: false,  // 不使用任何编码
		processData: false,  // 不处理数据对象
		success: function(){
		}
	})
})
回调函数

后端与ajax交互,那么就不应该再返回页面,通常情况下返回的都是jason格式数据
前端针对于HttpResponse与JsonResponse的处理策略不同

return HttpResponse(json.dumps(data))  # 针对于Httpresponse自己序列化为JSON数据格式的,还是当做普通字符,不会自动反序列化
return JsonResponse(data)  # 而对于JsonResponse因为指定发送JSON数据格式,那么前端会自动反序列化

而想让HttpResponse也能够自动反序列化,可以在ajax中添加一个参数

dataType: 'JSON'

序列化

def ser(request):
	user_list = models.User.objects.all()  # 获取用户表中所有用户对象
	from django.core import serializers  # 导入内置序列化模块
	ret = serializers.serialize('json', user_list)  # 调用方法快速的将对象中的数据序列化,第一个参数为序列化的方式
	return HttpResponse(ret)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值