ajax回顾

choice参数

 class Userinfo(models.Model):
        username = ...
        age = ...
        gender_choice = (
            (1,'male'),
            (2,'female'),
            (3,'others'),
        )
        gender = models.IntegerField(choices=gender_choice)
        # gender存的是数字 如果数字在上面的对应关系中 那么在取值的时候 可以通过
        user_obj.gender  # 数字
        user_obj.get_gender_display()  # 取到的就是数字对应的解释
        # 如果存的数字不在范围内  拿到的还是数字本身

MTV与MVC模型

MTV:
    M:models
    T:templates
    V:views
        
MVC:
    M:models
    V:views
    C:controller
     本质:MTV其实也是MVC

Ajax

异步提交

局部刷新

我们所用的ajax是基于jQuery封装好简易版本,所以在写ajax时候一定要确保导入jQuery

ajax基本语法结构
    $.ajax({
        url:'',  # 指定朝哪个后端地址发送请求  不写默认朝当前地址提交
        type:'post',  # 指定提交方式
        data:{'username':'jason','password':'123'},
        success:function(data){  # data指代的就是后端返回的异步提交的结果
            # 异步回调机制逻辑处理代码
        }
    })

前后端传输数据的编码格式

编码格式种类
    1.urlencoded
    2.formdata
    3.application/json

form表单
    form表单默认的编码格式是urlencoded
        urlencoded编码格式的数据特点
            username=jason&password=123&age=18
        # django后端针对符合urlencoded数据格式 会自动解析 并给你封装到request.POST中
        
        # 你可以通过制定enctype参数来修改form表单提交数据的编码格式
        # form表单传输文件的时候  编码格式就必须有默认的改为formdata
        """
        即可以传普通的键值对也可以上传文件
        
        django后端针对只要是符合urlencoded格式的数据都会自动解析放到request.POST
        针对文件数据 会解析并放到request.FILES
        """


ajax  默认的数据编码格式也是urlencoded
    也就意味着ajax发送post请求django后端默认也是通过request.POST获取数据
    
ajax发送json格式数据
    如何查看前端提交数据的编码格式?
        在请求头中有一个content-Type参数
    """
    前后端交互数据的时候 一定要做到数据个编码格式的一致性
    """
    1.需要手动指定编码格式
        contentType:'application/json'
    2.一定要确保数据也是符合json格式的
        data:JSON.stringify({'username':'jason'})
    
    # django后端针对json格式的数据 是不会做任何处理的  会原封不动的放在request.body中
    你可以手动去处理获取数据
        
        1.将bytes类型转成json格式字符串
        2.利用json模块json.loads反序列化出来
        
    
ajax传输文件
    ajax传文件 需要使用到js内置对象  FormData
    该对象及可以携带普通的键值对 给django后端的request.POST也可以携带文件给django后端的request.FILES
    
    # 1.现生成一个formdata对象
    var MyFormData = new FormData();
    # 2.添加普通的键值对
    MyFormData.append('username','jason');
    MyFormData.append('password','123');
    # 3.添加文件
    var fileObj = $('#myfile')[0].files[0];
    MyFormData.append('myfile',fileObj)
    """
    如何获取type=file的input标签存储的用户上传文件
    """
    $.ajax({
        url:'',
        type:'post',
        data:MyFormData,
        # 需要手动指定两个关键性的参数
        contentType:false,
        processData:false,
        success:function(data){
            ...
        }
   
    })  
    
  序列化组件
        from django.core imprt seralizers
        
        user_queryset = models.Userinfo.objects.all()
        
        res = seralizers.Seralizer('json',user_queryset)
        """
        res = [{},{},{}]
        """
        return HttpResponse(res)   
原文地址:https://www.cnblogs.com/aden668/p/11759843.html