• Ajax


    特点

      异步提交,局部刷新
    

    朝后端发送请求的方式

      1.浏览器地址栏直接输入url回车-------GET
      2.a标签href-----------------------GET
      3.form表单------------------------GET/POST
    
      4.ajax----------------------------GET/POST
      ajax不是新的编程语言,而是一种使用现有标准的新方法
      不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容
    

    基本语法

      $('#d1').click(function(){
            $.ajax({
                  // 1.指定往哪个后端发送请求
                  url:'',
                  // 2.请求方式
                  type:'post',
                  // 3.数据
                  data:{},
                  // 4.回调函数:当后端给你返回结果的时候会自动出发,args用来接收后端返回结果
                  dataType:true,
                  success:function(args){
                        alert(args)
                  }
            })
      })
    

    字典的返回,需要序列化 dumps,前端:JSON.parse

      from django.http import JsonResponse
      return JsonResponse(d) # 传到前端的直接转成对象了
      """
      回调函数是不会自动帮你序列化的
      可以使用JsonResponse返回数据,因为可以自动序列化
      """
    

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

    from表单

      默认的编码格式是urlencoded
      username=jason&password=123
      django针对符合urlencoded编码格式的数据都会自动帮你解析封装到request.POST中
    
      如果把编码格式改成formdata,那么针对普通的键值对还是解析到request.POST中,而将文件解析到request.FILES中
      from表单时没法发送json格式数据的
    

    ajax

      $('#d1').click(function(){
          $ajax({
              url:'',
              type:'post',
              data:{'username':'','password':''}
              success:function(){
            
                    }
                })
            })
      默认的编码格式也是urlencoded
      username=jason&password=123
      django针对符合urlencoded编码格式的数据都会自动帮你解析封装到request.POST中
    

    ajax发送json格式数据

      $('#d1').click(function(){
          $ajax({
              url:'',
              type:'post',
              contentType:'application/json', # 指定编码格式为json
              data:JSON.stringify({'username':'','password':''}),
              success:function(args){
            
              }
          })
      })
      ## 这个时候后端如何处理呢?
      request.is_ajax() # 判断当前请求是否是Ajax请求,返回布尔值
      request.body # b'{'username':'','password':''}'
      json_bytes = request.boby
      json_str = json_bytes.decode('utf8')
      json_dict = json.loads(json_str)
      其实json.loads() 可以自动解码再反序列化
      json_dict = json.loads(json_bytes)
    

    ajax发送文件

      ajax发送文件需要借助于js内置对象FormData
      $('#d1').click(fuction(){
      let formDataObj = new FormData() # 生成一个formData对象
      // 可以添加普通键值对
      formDataObj.append('username',$('#d1').val())
      formDataObj.append('password',$('#d2').val())
      // 也可以添加文件对象
      formDataObj.append('myfile',$('#d3')[0].files[0]) # 获取文件对象
      $.ajax({
            url:'',
            type:'post',
            data:formDataObj, # 直接将对象放在data这
            // 发送文件必须指定的参数
            contentType:false, # 不需要用任何编码,django后端能都自动识别formdata对象
            processData:false, # 告诉浏览器,不要对数据进行任何处理
        
            success:function(args){
            
                    }
                })
            })
      # 那么后端如何处理呢?
      request.POST
      request.FILES
      """
      1.需要利用内置对象FormData
      2.需要指定两个参数:contengType,processData,设置为false
      3.django后端能够识别到formdata对象,并且能够将内部普通见键值对封装到POST,文件封装到FILES
      """
    

    django自带序列化组件(drf)

      # 前后端分离的项目,后端只需要写代码将数据处理好,能够序列化返回给前端即可
      [{},{},{}]
      from django.core import serializers
      res = serializers.serialize('json',user_queryset) # 可以直接将数据编程json格式的数据 
    

    批量插入数据

      book_list = []
      for i in range(100000):
          book_obj = models.Book(title='第%s本书'%i)
          book_list.append(book_obj)
      models.Book.objects.bulk_create(book_list)
    
      """
      当你想要批量插入数据的时候,使用ORM提供的
      bulk_create(),很快
      """
  • 相关阅读:
    svn 更新
    首尾渐变
    sublime常用快捷键
    【CSS3】transition过渡和animation动画
    JS实现奇偶数的判断
    style、currentStyle、getComputedStyle区别介绍
    JavaScript中判断对象类型的种种方法
    CSS3 animation动画,循环间的延时执行时间
    EMCA创建em资料库时报错
    OS Kernel Parameter.semopm
  • 原文地址:https://www.cnblogs.com/qijiaxun/p/14258188.html
Copyright © 2020-2023  润新知