zoukankan      html  css  js  c++  java
  • 十、Django的文件上传

    一、上传文件相关

    1. 请求头ContentType

    ContentType指的是请求体的编码类型,常见的类型共有3种:

    1. application/x-www-form-urlencoded
      最常见的 POST 提交数据的方式了
      浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 默认格式application/x-www-form-urlencoded 方式提交数据,ajax默认也是这个
      urlencoded是一种数据格式,
      比如:
      username=yang&password=123&csrfmiddlewaretoken=.......
      # 这样的一种格式,类似get请求提交数据的格式

          # 这样在后台,就可以通过request.POST,就可以直接拿到数据了
          <QueryDict:{'username':['yang']},'password':['123'],......>
      
    2. multipart/form-data
      专门用来传输文件的消息格式,会把文件作为片段数据发送,而不是整个文件一起发送

    3. application/json
      告诉服务端消息主体是序列化后的 JSON 字符串
      之前给ajax传递数据,就是把字典写成了一个类似json类型的数据
      def login(request):
      ...
      ret = '{"code":0,"redirect_url":"/index/"}'
      return HttpResponse(ret)

      在不加content_type='application/json'时,传递过去的就是一个字符串
      def login(request):
      d1 = {"code":0,"redirect_url":"/index/"}
      import json
      d1_json = json.dumps(d1)
      return HttpResponse(d1_json,)

      success:function (res) {
      	console.log(res,typeof res);
          # {"code": 0, "redirect_url": "/index/"} string
          ....
      	}
      
      这个时候,就不方便我们后续的使用,我们期望还是能拿到一个字典(自定义对象的类型)
      

      使用content_type='application/json',ajax就会调用自己内部的反序列化机制,直接调用反序列化方法
      def login(request):
      d1 = {"code":0,"redirect_url":"/index/"}
      import json
      d1_json = json.dumps(d1)
      return HttpResponse(d1_json,content_type='application/json')

      success:function (res) {
      	console.log(res,typeof res);
          # {code: 0, redirect_url: "/index/"} "object"
          ....
      	}
      
      此时,ajax端不需要自己序列化,也拿到了object类型的对象,这是因为内部自动调用的
      
    4. application/json 在ajax端发送数据,我们如何在视图函数中应用

  • 相关阅读:
    mysql命令行如何得到表结构
    liunx cron问题
    关于SQL判断某个值的查询
    给自己的nexus私人仓库添加缺少的jar包
    MyEclipse9 Maven开发Web工程 详细配置
    springMVC 之 Controller
    java 动态代理
    Freemarker
    java编程陷阱
    HttpClient应用
  • 原文地址:https://www.cnblogs.com/yangzm/p/11272721.html
Copyright © 2011-2022 走看看