「Django」rest_framework学习系列-解析器
满足两个要求,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学习系列-解析器的更多相关文章
- 「Django」rest_framework学习系列-渲染器
渲染器:作用于页面,JSONRenderer只是JSON格式,BrowsableAPIRenderer有页面,.AdminRenderer页面以admin形式呈现(需要在请求地址后缀添加?fromat ...
- 「Django」rest_framework学习系列-API访问跨域问题
#以中间件方式解决API数据访问跨域问题1.API下新建文件夹下写PY文件a.引入内置类继承: from django.middleware.common import MiddlewareMixin ...
- 「Django」rest_framework学习系列-路由
自动生成4个url路由:from rest_framework import routersrouter = routers.DefaultRouter()router.register(r'wrx' ...
- 「Django」rest_framework学习系列-分页
分页a.分页,看第N页,每页显示N条数据方式一:使用PageNumberPagination创建分页对象,配合settings全局配置 views设置 from rest_framework.pagi ...
- 「Django」rest_framework学习系列-视图
方式一 1.settings设置 INSTALLED_APPS = [ ... 'rest_framework', ] 2.views设置 from rest_framework.response i ...
- 「Django」rest_framework学习系列-序列化
序列化方式一 :在业务类里序列化数据库数据 class RolesView(APIView): def get(self,request,*args,**kwargs): roles = models ...
- 「Django」rest_framework学习系列-版本认证
1.自己写: class UserView(APIView): versioning_class = ParamVersion def get(self,request,*args,**kwargs) ...
- 「Django」rest_framework学习系列-权限认证
权限认证:1.项目下utils文件写permissions.py文件 from rest_framework.permissions import BasePermission class SVIPP ...
- 「Django」rest_framework学习系列-节流控制
1.节流自定义类: import time from api import models VISIT_RECORD = {} class VisitThrottle(BaseThrottle): #设 ...
随机推荐
- sql批量更新
-----------------更新无锡医院名称 update Opt_DKI_Hospital set centerName =tmp.[医院名称] from Opt_DKI_Hospital h ...
- windows64系统下安装 redis服务 (详细)
Linux下Redis安装链接 : 转到 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表) ...
- Scrum立会报告+燃尽图(Beta阶段第七次)
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2388 项目地址:https://coding.net/u/wuyy694 ...
- 博弈---威佐夫博奕(Wythoff Game)
这个写的不错 威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同 时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜. 这种情况下是颇为复杂 ...
- 前端系列之HTML基础知识概述
1.什么是HTML HTML:Hyper Text Markup Language :超文本标记语言. 超文本:功能比普通文本更加强大. 标记语言:使用一组标签对内容进行描述的语言,它不是编程语言. ...
- Windows上安装、配置MySQL的常见问题
一,MySQL的下载安装 MySQL的安装过程就不说了,基本上和一般软件的安装过程没什么两样,就是一路点next,设置的root用户的密码要牢记.具体教程可以参考:http://jingyan.bai ...
- nodejs 中on 和 emit
首先测试用例: var EventEmitter = require('events').EventEmitter var life = new EventEmitter(); // life.on( ...
- 【BioCode】将多个蛋白质序列分成单个的txt文档
代码说明: fasta格式的蛋白质序列,一个txt里面有很多蛋白质序列,计算ss.pssm或disorder score时候都需要单条计算,需要分开. 分割前: 分割后: show you the c ...
- pixi.js 微信小游戏 入手
pixi是什么?一款h5游戏引擎 优点:简单简洁性能第一 缺点:大多数用的国产三大引擎,pixi资料少,工具少, 为什么学,装逼 用pixi开发小游戏行吗? 行.但要简单处理下 下载官网上的 weap ...
- JSP 问题总结
<input type="button" value="返回" onclick="javascript:window.location.href ...