代码改变世界

Django ajax 笔记

2021-02-19 20:27  ttym88m  阅读(41)  评论(0编辑  收藏  举报

1.后端数据编码格式的不同

'''
    1. 3种编码格式
        urlencoded
        
        formdata
        
        json
        
    2.默认的数据格式编码urlencoded
        2.1 数据格式编码urlencoded 数据格式 username=json&passowrd=123
        
            django后端针对urlencode编码格式的数据会自动解析封装到request.POST中
            usrname=jason&password=1234  >>>request.POST
        
       
       2.2如果编码格式改成enctype=multipart/form-data.增加的文件格式
       
            那么 普通的键值对还是解析到 request.POST 中,文件解析到request.FILES中。
        
        
        
       2.3 form表单无法发送jason格式的。 
       
       
       
    3.ajax 默认的编码格式也是urlencoded
        
        
        3.1如何指定编码格式
            ajax 中 contentType:'application/json' 
            data:JSON.stringify({'username':'aaa','age':23}),
            
            现在向后端发送的数据格式"username":"aaa","age":23
            
            
        后端 如何判断是ajax请求
            if request.is_ajax():
            
            django 对ajax的请求不会做任何处理
            针对前段发送过来的json 格式 request.body 格式
            
            import json
            
            json_bytes = request.body
            json_str = json_bytes.decode('utf-8')
            json_dict = json.loads(json_str)
            print(json.dict,type(json.dict))
     
     
     4.ajax发送文件-------前段
        4.1需要先利用FormData 内置对象
            在ajax的前面  
             $("#btn").click(function(){  添加以下代码  })
            let formDataObj = new FormData();
            formDataObj.append('username',$("#id1").val())
            formDataObj.append('password',$("#id2").val())
            添加文件对象
            forDataObj.append('myfile',$("#d3")[0].files[0])
            
            
            以下为ajax的配置
            
            $.ajax({
                url:'',
                type:'post',
                data:formDataObj,//直接将对象放在data中。
                contentType:false, //不需要任何编码 django后端能够自动识别formData第一项
                processDate:false, //告诉浏览器,不要对数据进行任何处理
            })
                       
          
        4.2.后端   
            if request.is_ajax():
                if request.method=="POST":
                    print(request.POST) 
                    print(request.FILES)         
'''

5.后台序列化组件

from django.core import serializers
res = serializers.serialize('json',user_uquerset)
return HttpResponse(res)

6批量插入数据

models.Book.objects.bulk_create(book_list)