码迷,mamicode.com
首页 > 其他好文 > 详细

django rest framework 之 解析器

时间:2018-11-09 12:40:06      阅读:23      评论:0      收藏:0      [点我收藏+]

标签:发送   ext   字符串类   字符串   mit   django   条件   自动   .post   

一、前言

在前端向后台发送form表单或者ajax数据的时候,django的content_type会拿到请求头中的Content-Type属性然后根据值进行解析。
将request.data中的值放到request.POST中需要满足两个条件

  • 请求头要求:
    Content-Type: application/x-www-form-urlencoded
    PS: 如果请求头中的 Content-Type: application/x-www-form-urlencoded,request.POST中才有值(去request.body中解析数据)。
  • 数据格式要求:
    name=weilan&age=18&gender=男

1、表单提交

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

<form action="/api/parser/" method="post">
        <input type="text" name="parser"/>
        <input type="text" name="parser2"/>
        <input type="submit"/>
</form>>
                        

2、ajax提交

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

$.ajax({
    url:...
    type:POST,
    data:{name:alex,age=18} # 内部转化 name=weilan&age=18&gender=男
})

情况一:

    $.ajax({
        url:...
        type:POST,
        headers:{'Content-Type':"application/json"}
        data:{name:weilan,age=18} # 内部转化 name=weilan&age=18&gender=男
    })
    # body有值;POST无

情况二:

    $.ajax({
        url:...
        type:POST,
        headers:{'Content-Type':"application/json"}
        data:JSON.stringfy({name:weilan,age=18}) # {name:weilan,age:18...} # 不在做内部转换,而是传递字符串
    })
    # body有值;POST无
    # 这种情况下request.body有值, 需要字节类型转换成字符串类型。
    # json.loads(request.body)

django rest framework 之 解析器

标签:发送   ext   字符串类   字符串   mit   django   条件   自动   .post   

原文地址:https://www.cnblogs.com/welan/p/9934387.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!