关于request.POST.get

来源:4-4 实现登录功能

树莓派是什么派

2020-02-19

老师在这里如果我使用request.POST.get获取参数的话,会很奇怪,

    code = request.POST.get('code')
    app_id = request.POST.get('appId')
    nick_name = request.POST.get('nickName')
    print(code,app_id,nick_name)

django后台这样子获取是可以拿到的,前台也可以,但是前台需要加上header,关于这个header的设置,有点奇怪.
这是小程序端部分请求代码

method: 'POST',
            data: {
              code,
              appId,
              nickName
            },
            header: {
              'Content-Type': 'application/json'
            },

如果我设置请求头类型是application/json的话,是拿不到数据的,只有我把请求头类型设成application/x-www-form-urlencoded的时候,才能正常拿到数据。
我猜这是因为post请求一般被用作表单提交,所以只有application/x-www-form-urlencoded才是起作用的。还有就是只要我这么设置请求头的话,用request.POST.get一样可以成功执行,也就是这样子和老师您通过解析请求主体的方法是没啥区别的把?

写回答

1回答

咚咚呛

2020-02-20

这主要是Django侧导致的。

通过request.POST.get获取的是以表单形式提交的数据,所以需要设置form-urlencoded这样的content-type;而json数据则是通过request.body来获取的,这个区别需要注意下。

0
0

Django+小程序技术打造微信小程序助手

0到1完整项目实战过程,是难得的Django+小程序全栈项目体验。

991 学习 · 507 问题

查看课程