「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): #设 ...
随机推荐
- CSS 实用实例
背景颜色 1. 颜色背景 <style type="text/css">body { font-size: 16px;">h1 { font-size: ...
- 华为ensp使用
网络学习目录 AR是() Auto:自动线 copper:双绞线缆 serial:串行线 pos: 光纤 E1: ATM: CTL: STA: PC: MCS ...
- spark的数据结构 RDD——DataFrame——DataSet区别
转载自:http://blog.csdn.net/wo334499/article/details/51689549 RDD 优点: 编译时类型安全 编译时就能检查出类型错误 面向对象的编程风格 直接 ...
- Python Requests库入门——应用实例-京东商品页面爬取+模拟浏览器爬取信息
京东商品页面爬取 选择了一款荣耀手机的页面(给华为打广告了,荣耀play真心不错) import requests url = "https://item.jd.com/7479912.ht ...
- 软工实践-Alpha 冲刺 (9/10)
队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 已经解决登录注册等基本功能的界面. 完成非功能的主界面制作 ...
- lintcode-383-装最多水的容器
383-装最多水的容器 给定 n 个非负整数 a1, a2, ..., an, 每个数代表了坐标中的一个点 (i, ai).画 n 条垂直线,使得 i 垂直线的两个端点分别为(i, ai)和(i, 0 ...
- ArrayList和LinkedList源码分析
ArrayList 非线程安全 ArrayList内部是以数组存储元素的.类有以下变量: /*来自于超类AbstractList,使用迭代器时可以通过该值判断集合是否被修改*/ protected t ...
- 解决CentOS安装redis局域网内无法访问的问题
redis4.0版本安装教程晚上非常多,随便贴出来一个:http://www.cnblogs.com/web424/p/6796993.html 安装完成后,在局域网内发现无法访问到redis.cen ...
- MySQL 基于lvm2的备份实战演练 (快照备份)
前言: lvm2实现热备的原理是基于lvm2的快照功能,lvm2可以实现数据集不大的情况下的热备. 实战过程如下:这里的演示是在一台Mariadb服务器上进行创建快照,将快照中的文件scp到备份服务器 ...
- 详解Python闭包,装饰器及类装饰器
在项目开发中,总会遇到在原代码的基础上添加额外的功能模块,原有的代码也许是很久以前所写,为了添加新功能的代码块,您一般还得重新熟悉源代码,稍微搞清楚一点它的逻辑,这无疑是一件特别头疼的事情.今天我们介 ...