• django 请求体和请求体相关知识


    请求头ContentType

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

    django 如果发送post请求,或者表单提交数据。如果不设置enctype属性。

    就会以application/x-www-form-urlencoded方式提交数据。

    这就是设置请求请求体字符编码,请求体里的数据就会按照特定的字符编码格式排列。

    如:

    省略掉了):

    POST http://www.example.com HTTP/1.1
    Content-Type: application/x-www-form-urlencoded;charset=utf-8
    
    user=yuan&age=22

    2 multipart/form-data

    这是上传文件时,要用的字符编码格式。

    必须让 <form> 表单的 enctype 等于 multipart/form-data。直接来看一个请求示例:

    复制代码
    POST http://www.example.com HTTP/1.1
    Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
    
    ------WebKitFormBoundaryrGKCBY7qhFd3TrwA
    Content-Disposition: form-data; name="user"
    
    yuan
    ------WebKitFormBoundaryrGKCBY7qhFd3TrwA
    Content-Disposition: form-data; name="file"; filename="chrome.png"
    Content-Type: image/png
    
    PNG ... content of chrome.png ...
    ------WebKitFormBoundaryrGKCBY7qhFd3TrwA--
    复制代码

    request.FILES来获取文件信息

    3 application/json

    application/json 这个 Content-Type 作为响应头大家肯定不陌生。实际上,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。

    传过去之后request.post 是取不到值的,因为django是不会对json数据进行处理的。

    只能在相应体里,request.body里取原生的json二进制数据,要json.loads(request.body.encoding('utf-8'));转成了字典

    JSON 格式支持比键值对复杂得多的结构化数据,这一点也很有用。记得我几年前做一个项目时,需要提交的数据层次非常深,我就是把数据 JSON 序列化之后来提交的。不过当时我是把 JSON 字符串作为 val,仍然放在键值对里,以 x-www-form-urlencoded 方式提交。

  • 相关阅读:
    shell命令--stat
    英文段子
    OCP读书笔记(16)
    shell命令--uptime
    OCP读书笔记(15)
    shell命令--dmesg
    OCP读书笔记(14)
    shell命令--hostname
    OCP读书笔记(13)
    shell命令--uname
  • 原文地址:https://www.cnblogs.com/zhaoweihang/p/9336043.html
Copyright © 2020-2023  润新知