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

<form methed..>
  input
</form>

b.ajax提交

$.ajax({
url:..
type:POST
headers:{Content-Type:application/json}
data:{name:xx,age=xx} #内部转化为 name=xx&age=xx&gender=xx
})

没有值情况一:请求头不是规定格式,body有值,POST没值

$.ajax({
url:..
type:POST
headers:{Content-Type:application/json}
data:{name:xx,age=xx} #内部转化为 name=xx&age=xx&gender=xx
})

没有值情况二:请求头和数据格式都不对

$.ajax({
url:..
type:POST
headers:{Content-Type:application/json}
data:JSON.stringfy({name:xx,age=xx}) #{name:xx,age:xx}
})

--rest_framework解析器 对请求数据进行解析

from rest_framework.parsers import JSONParser,FormParser

class ParserView(APIView):
parser_classes = [JSONParser,FormParser]
#JSONParser表示只能解析content-type:application/json头
#FormParser表示解析content-type:application/x-www-form-urlencoded头
def post(self,request,*args,**kwargs):
'''parser_classes = [JSONParser]
允许用户发送JSON格式数据
a.content-type:application/json
b.{'name':xx,age:xx}
'''
#获取解析后的结果
print(request.data)
return HttpResponse('用户列表')

全局配置
#解析器配置

'DEFAULT_PARSER_CLASSES':['rest_framework.parsers.JSONParser','rest_framework.parsers.FormParser']
解析后的数据需要在request.data中去取值
即request._request.POST.get('xxx')替换为request.data.get('xxx')
class JSONParser(BaseParser):
class FormParser(BaseParser):
class MultiPartParser(BaseParser):
class FileUploadParser(BaseParser):
下面两个是上传文件

「Django」rest_framework学习系列-解析器的更多相关文章

  1. 「Django」rest_framework学习系列-渲染器

    渲染器:作用于页面,JSONRenderer只是JSON格式,BrowsableAPIRenderer有页面,.AdminRenderer页面以admin形式呈现(需要在请求地址后缀添加?fromat ...

  2. 「Django」rest_framework学习系列-API访问跨域问题

    #以中间件方式解决API数据访问跨域问题1.API下新建文件夹下写PY文件a.引入内置类继承: from django.middleware.common import MiddlewareMixin ...

  3. 「Django」rest_framework学习系列-路由

    自动生成4个url路由:from rest_framework import routersrouter = routers.DefaultRouter()router.register(r'wrx' ...

  4. 「Django」rest_framework学习系列-分页

    分页a.分页,看第N页,每页显示N条数据方式一:使用PageNumberPagination创建分页对象,配合settings全局配置 views设置 from rest_framework.pagi ...

  5. 「Django」rest_framework学习系列-视图

    方式一 1.settings设置 INSTALLED_APPS = [ ... 'rest_framework', ] 2.views设置 from rest_framework.response i ...

  6. 「Django」rest_framework学习系列-序列化

    序列化方式一 :在业务类里序列化数据库数据 class RolesView(APIView): def get(self,request,*args,**kwargs): roles = models ...

  7. 「Django」rest_framework学习系列-版本认证

    1.自己写: class UserView(APIView): versioning_class = ParamVersion def get(self,request,*args,**kwargs) ...

  8. 「Django」rest_framework学习系列-权限认证

    权限认证:1.项目下utils文件写permissions.py文件 from rest_framework.permissions import BasePermission class SVIPP ...

  9. 「Django」rest_framework学习系列-节流控制

    1.节流自定义类: import time from api import models VISIT_RECORD = {} class VisitThrottle(BaseThrottle): #设 ...

随机推荐

  1. python 标准日志模块loging 及日志系统实例

    本文出处:https://www.cnblogs.com/goodhacker/p/3355660.html#undefined python的标准库里的日志系统从Python2.3开始支持.只要im ...

  2. ssd a

    Alpha版本测试报告 (1)测试计划 测试人员 工作安排 瞿煌人 制定测试计划,撰写测试报告 周建峰 执行测试,撰写测试报告 注:测试结果Y表示通过测试,N表示未通过测试. 功能 描述 效果 测试结 ...

  3. OGNL动态实现result

    OGNL就是struts.xml文件中的<result>通过get()方法,动态获取action类中的变量 <struts> <package name="de ...

  4. php addslashes和stripslashes函数

    addslashes — 使用反斜线引用字符串 stripslashes — 反引用一个引用字符串   Example #1 一个 addslashes() 例子 <?php$str = &qu ...

  5. lintcode-389-判断数独是否合法

    389-判断数独是否合法 请判定一个数独是否有效. 该数独可能只填充了部分数字,其中缺少的数字用 . 表示. 注意事项 一个合法的数独(仅部分填充)并不一定是可解的.我们仅需使填充的空格有效即可. 说 ...

  6. C#高级编程(第六版)学习:第三十一章:Windows窗体

    第三十一章 Windows窗体 创建Windows窗体应用程序 在文本编辑器中输入: /* * form.cs * a simple windows form * */ using System; u ...

  7. 3dContactPointAnnotationTool开发日志(二八)

      师姐说物体间不能有穿透,于是我试了下给物体加rigidbody和meshCollider   然后就报错:   说是用meshCollider要么去掉刚体要么就把刚体设置为iskinematic. ...

  8. 解决java图形界面label中文乱码

    第一:在你的具有main函数的类也即你应用运行的主类上点击右键,选择Run As中的Run Configurations,如下图:java,awt,中文方框,中文乱码第二,在Arguments标签下的 ...

  9. React Native 学习-组件说明和生命周期

    组件的详细说明(Component Specifications) 当通过调用 React.createClass() 来创建组件的时候,你应该提供一个包含 render 方法的对象,并且也可以包含其 ...

  10. ASP.NET 页面访问控制

    request常用对象和方法: @属性:1.quary string,获取通过URL路径传来的数据 2.Form,获取通过表单提交传输的数据 3.servervariables,获取Web服务器变量的 ...