django中级之ajax与前后端编码

  • ajax
  • 前后端数据编码格式

ajax

异步提交 局部刷新
与form表单的区别可以参考码云网址的注册页手机号输入框
ajax其实就是js自带的功能 不是一门新的技术点 我们学习的是jQuery封装之后版本

1.基础语法
	$.ajax({
        url:'',   控制数据的提交地址
        type:'',  控制请求方式(默认get请求)
        data:{},  组织提交的数据
        success:function(形参){
                异步回调函数
        }
    })
    
2.数据编码格式
	Content-Type
	格式1:urlencoded
 		数据格式: name=jason&pwd=123&hobby=read
   		django后端统一处理到request.POST中
  	格式2:formdata
       数据格式: 无法查阅
       django后端自动将文件数据处理到request.FILES 普通数据request.POST
  	格式3:application/json
       数据格式: json格式
      	django后端不会处理 在request.body中存储(bytes类型) 自己处理
       语法注意事项
    		data: JSON.stringify({'name':'jason','pwd':123}),
          contentType:'application/json',
        
3.ajax携带文件数据
	$('#d3').click(function () {
        // 1.产生内置对象
        let formData = new FormData();
        // 2.添加普通数据
        formData.append('username',$('#d1').val())
        // 3.添加文件数据
        formData.append('file', $('#d2')[0].files[0])
        // 4.发送ajax请求
        $.ajax({
            url:'',
            type:'post',
            data:formData,
            contentType:false,  // 不使用任何编码
            processData:false,  // 不处理数据对象
            success:function (args) {
                
            }
        })
    })
 
4.回调函数
	后端跟ajax交互 不应该再返回页面 通常情况下都是返回json格式数据
 	前端针对HttpResponse和JsonResponse返回的json格式数据处理策略不同
    	前者不会自动反序列化 而后者会自动反序列化
   		如果想让前者也自动反序列化可以添加一个固定的参数
        	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)
posted @ 2022-09-07 22:56  懒羊羊A  阅读(20)  评论(0)    收藏  举报