• Django-(7)


    内容概览

    • Ajax
    • 序列化

    Ajax

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

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

    在这里插入图片描述
    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(){}
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    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(){
    		}
    	})
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    回调函数

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

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

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

    dataType: 'JSON'
    
    • 1

    序列化

    def ser(request):
    	user_list = models.User.objects.all()  # 获取用户表中所有用户对象
    	from django.core import serializers  # 导入内置序列化模块
    	ret = serializers.serialize('json', user_list)  # 调用方法快速的将对象中的数据序列化,第一个参数为序列化的方式
    	return HttpResponse(ret)
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    科研热点|官宣!2022年JCR分区和影响因子发布时间确定!
    C和指针 第15章 输入/输出函数 15.4 ANSI I/O概念
    [数据分析与可视化] Python绘制数据地图2-GeoPandas地图可视化
    蛇优化算法(Matlab代码实现)
    C++ 基础(十二)函数-题目练习
    Pytorch Bert 中文分类 运行代码时候遇到的问题
    去中心化标志符在DID中的核心地位
    Debezium系列之:Mysql数据库开启Binlog
    element-ui 树形控件实现 三级联动穿梭框
    Python windows安装Python3环境
  • 原文地址:https://blog.csdn.net/AL_QX/article/details/126750002