前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django Rest Framework 解析器(上)

Django Rest Framework 解析器(上)

作者头像
小团子
发布2019-07-18 11:36:21
5440
发布2019-07-18 11:36:21
举报
文章被收录于专栏:数据云团数据云团

Django Rest Framework 版本(下)

在前端向后端发送 form 表单或者 ajax 数据的时候,django 的 content_type 会拿到请求头中的 Content-Type 属性,然后根据值进行分析。

将 request.data 中的值放到 request.POST 中需要满足两个条件:

  • 请求头要求:

Content-Type:application/x-www-form-urlencoded

如果请求头中的 Content-Type:application/x-www-form-urlencoded,request.POST 中才有值(去 request.body 中解析数据)。

数据格式要求:

  • name=yuntuan&age=1&gender=men

① 表单提交

form 表单提交时会自动的将请求头中的 Content-Type:application/x-www-form-urlencoded,数据也会自动转换为 ?parser=xxx&parser2=xxx 的格式。

代码语言:javascript
复制
<form action="/api/parser/" method="post">  <input type="text" name="parser"/>  <input type="text" name="parser2"/>  <input type="submit"/></form>

② ajax 提交

默认的请求头中 Content-Type:application/x-www-form-urlencoded

代码语言:javascript
复制
$.ajax({  url: ...,type: "POST",data: {name: yuntuan,    age: 18  }})

情况一:

# body 有值,POST 无

代码语言:javascript
复制
$.ajax({
  url: ...,
type: "POST",
  headers: {"Content-Type": "application/json"},
  data: {
    name: yuntuan,
    age: 18
  }
})

情况二:

# body 有值,POST 无

# 这种情况下 request.body 有值,需要字节类型转换成字符串类型

# json.loads(request.body)

代码语言:javascript
复制
$.ajax({
  url: ...,
type: "POST",
headers: {"Content-Type": "application/json"},
  # 不在做内部转换,而是传递字符串
  data: JSON.stringfy({
    name: yuntuan,
    age:18
  })
})
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档