感谢alex和武老师
前戏: Djaogo对请求体只支持 application/x-www-form-urlencoded请求头以及name=alex&age=18的数据格式
django.request.POST/ request.body
1. 请求头要求
Content-Type: application/x-www-form-urlencoded
PS:如果请求头中的 Content-Type:application/x-www-form-urlencoded, request.POST中才有值(去request.body里面解析数据) 2.数据格式要求:
name=alex&age=18&gender=男 如:
a. form表单提交
<form method..>
input...
</form> b. ajax提交
$.ajax({
url:...
type:POST,
data:{name:alex, age=18}
}) #自定义请求头 $.ajax({
url:...
headers:{'Content-Type':"application/json"}
data:{name:alex, age=18} #内部转化 name=alex &age=18
})
#body有值, POST无 $.ajax({
url:...
type:POST,
headers('Content-Type':'application/json)
data:JSON.atringfy({name:alex,age=18}) #{name:alex,age:18}
})
#body有值, POST无值
获取数据的话 json.loads(request.body) rest_framework解析器, 对请求体数据进行解析 from rest_framework.parsers import JSONParser,FormParser class ParseView(APIView):
"""
JSONParser:表示解析content-type:application/json头 常用这个
FormParser:表示解析application/x-www-form-urlencoded
"""
parser_classes = [JSONParser,FormParser]
def post(self, request, *args, **kwargs):
"""
允许用户发送JSON格式数据
a. content-type:application/json
b.{'name':'alex', 'age':18} 1.获取用户请求
2.获取用户请求体
3.获取用户请求头和parser_classes = [JSONParser, FormParser,]
4. JSONParser对象请求体
5.request.data
"""
#获取解析后的结果
print(request.data)
return HttpResponse('ParserView') 全局配置:
REST_FRAMEWORK = {
"DEFAULT_PARSER_CLASSES":['rest_framework.parsers.JSONParser','rest_framework.parsers.FormParser']
} 后期通过request.data传值 如果是上传
from rest_framework.parsers import FileUploadParser

rest_framework-解析器-总结完结篇的更多相关文章

  1. rest_framework解析器组件源码流程

    rest_framework解析器组件源码流程 解析器顾名思义就是对请求体进行解析.为什么要有解析器?原因很简单,当后台和前端进行交互的时候数据类型不一定都是表单数据或者json,当然也有其他类型的数 ...

  2. rest_framework(解析器 上)

    rest_framework 解析器 对请求题数据进行解析 url from django.conf.urls import url,include from cmdb import views ur ...

  3. rest_framework 解析器(下 全局配置使用)

    解析器 一般都是全局设置 参考文档 www.cnblogs.com/wupeiqi/articles/.html REST_FRAMEWORK=( "DEFAULT_PARSER_CLASS ...

  4. rest_framework:解析器

    一.解析器的作用 根据请求头content-type选择对应的解析器对请求体内容进行处理. 有application/json,x-www-form-urlencoded,form-data等格式 二 ...

  5. rest_framework之解析器详解 05

    解析器就是服务端写api,对于前端用户发来的数据进行解析.解析完之后拿到自己能用数据. 本质就是对请求体中的数据进行解析. django的解析器 post请求过来之后,django 的request. ...

  6. 「Django」rest_framework学习系列-解析器

    满足两个要求,request.Post中才有值 1.请求头要求:请求头中的Content-Type为application/x-www-form-urlencoded 2.数据格式要求 name=x& ...

  7. Django Rest Framework源码剖析(五)-----解析器

    一.简介 解析器顾名思义就是对请求体进行解析.为什么要有解析器?原因很简单,当后台和前端进行交互的时候数据类型不一定都是表单数据或者json,当然也有其他类型的数据格式,比如xml,所以需要解析这类数 ...

  8. spring配置多视图解析器

    最近做一个小项目(移动端),自己搭了个简单的SSM框架(spring + spring MVC + Mybitis),展示层本来选用的是jsp,各方便都已经搭建好,结果发现有些页面需要用到H5的一些功 ...

  9. rest framework 之解析器

    一.示例 1.api/urls.py from django.urls import path, re_path from api.views import UserView, ParserView ...

随机推荐

  1. XML 解析---dom解析和sax解析

    眼下XML解析的方法主要用两种: 1.dom解析:(Document Object Model.即文档对象模型)是W3C组织推荐的解析XML的一种方式. 使用dom解析XML文档,该解析器会先把XML ...

  2. Button的Click事件与js函数的两种不同顺序触发方式

    先运行js.或者先运行Click事件,近期就遇到了这个问题,開始弄了两个button分别运行,那才叫一个蛋疼... 1.先运行js,再运行Button的Click函数 <asp:Button I ...

  3. SharePoint 使用Expression Web 设计网站

    创建好网站以后可就可以开始发布了 possible causes : 1.The web server may not hava the FrontPage Server Extensions ins ...

  4. 【摘录】JDBC Master Slave(JDBC方式的JMS集群)

    JDBC Master Slave First supported in ActiveMQ version 4.1 If you are using pure JDBC and not using t ...

  5. c# 02-18 值类型 引用类型 字符串的不可变性 字符串的处理方法

    1值类型 直接把值存在栈中 栈的特点是后进先出 int double decimal char struct enum bool 2 引用类型 把值存在堆中,把地址存在栈中: string 自定义的类 ...

  6. SpringCloud学习笔记(5)----Spring Cloud Netflix之Eureka的服务认证和集群

    1. Eureka服务认证 1. 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> < ...

  7. SQL Server查询死锁,杀死进程解决死锁

    查询死锁进程和表 SELECT request_session_id AS spid , OBJECT_NAME(resource_associated_entity_id) AS 'table' F ...

  8. B. Recursive Queries 打表

    Code: #include<cstdio> #include<iostream> #include<algorithm> #include<cstring& ...

  9. 堆(Heap)-c实现

    这个堆的实现采用数组存储的完全二叉树实现. 最近有点烦躁,先是跳槽到了一个外包公司,感觉2016有点坑,另外一件事就是老婆怀孕了,但是在家里没人照顾,很担心. 这个堆的实现就暂时不优化了,基本的插入, ...

  10. dockerhub 推送镜像

    登录dockerhub [root@riyimei-node1:/home] > docker login Login with your Docker ID to push and pull ...