Django无法获取POST请求内容的问题分析

在Django里写了POST的接口,然后就开始踩坑之旅。

因为POST平时更多的是表单,所以一开始遇到了CSRF的问题,Django为了表单提交安全,默认加载了CSRF中间件,这个问题马上解决了。

接着接口上线后,按正常其他语言的POST调用,它们请求头默认的文本格式类型是

content-type : application/json

这时候通过 request.POST就取不到参数了。

查阅了相关资料,发现咱们用request.post请求,把参数放在 data= 上的,其实模拟的是一种表单提交,它的参数可以使用POST来获取,并且取到时就是字典结构,用:

request.POST.get('key',0)

就能够取到参数。

而其他语言content-type : application/json的方式其实就是相当于把参数放在 json= 上做了上传。

而其他语言要模拟表单请求的话,就需要修改请求头,用form提交:

'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'

然后还要拼接参数:

import qs from 'qs'
body = qs.stringify(body)

如果是服务器做修改的话,就需要从request.body里取值,取到的是一个json字符串,用eval函数将之转化为表达式后,就能正常取到里面的参数了。

json_dic = eval(request.body)

key_value = json_dic['key']

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值