首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由于请求对象中的查询字典为空,Django json加载失败

由于请求对象中的查询字典为空,Django json加载失败
EN

Stack Overflow用户
提问于 2019-04-20 07:35:29
回答 2查看 412关注 0票数 0

我让ajax调用post到/cart/total,在这里我使用post将JSON字符串存储在本地存储中,当我运行json loads时,它会显示错误。

代码语言:javascript
运行
复制
TypeError(f'the JSON object must be str, bytes or bytearray, '
TypeError: the JSON object must be str, bytes or bytearray, not QueryDict

在解析之前,我的JSON字符串看起来像是有一个空的字段,在Django中我没有意识到这一点

代码语言:javascript
运行
复制
<QueryDict: {'{"32":1,"33":1,"34":2}': ['']}>
代码语言:javascript
运行
复制
<script>


    function addtocart(mitem, mprice) {

        if(localStorage.getItem('cart')==null){
            // var mobj = {}
            // var countQ ={}
            var price = String(mprice)
            var mobj = { [String(mitem)]: 1 }
            var countQ = {'Quantity':1}
            var storeobj = JSON.stringify(mobj)
            var storeCountq = JSON.stringify(countQ)
            localStorage.setItem('cart', storeobj)
            localStorage.setItem('quantity',storeCountq)
            console.log(localStorage.getItem('cart'))
        }else{
            var data = localStorage.getItem('cart')
            var quant = localStorage.getItem('quantity')
            var obj = JSON.parse(data)
            var parsequant = JSON.parse(quant)
            if(obj.hasOwnProperty(String(mitem))){
                obj['%s',mitem]++
                parsequant['Quantity']++
                var storeobj = JSON.stringify(obj)
                console.log(localStorage.getItem('cart'))
                var storeCountq = JSON.stringify(parsequant)
                localStorage.setItem('cart', storeobj)
                localStorage.setItem('quantity', storeCountq)
            }
            else{
                obj[String(mitem)] = 1
                parsequant['Quantity']++
                var storeobj = JSON.stringify(obj)
                console.log(localStorage.getItem('cart'))
                var storeCountq = JSON.stringify(parsequant)
                localStorage.setItem('cart', storeobj)
                localStorage.setItem('quantity', storeCountq)
            }
        }
        }

    function ajaxcall(){
            $.ajax(
                        {
                            type: "POST",
                            url: "/cart/total",
                            data: localStorage.getItem('cart'),
                            success: function () {
                                console.log("sent tdata")
                            }
                        })
                }

        ajaxcall()
    </script>
代码语言:javascript
运行
复制
 <p style="position: absolute; bottom: 0px"><button class="button" style="width: 200px" onclick="addtocart( '{{M.Menu_Item_Id}}', '{{M.Menu_ItemPrice}}' )" >Add to cart</button>

查看函数

代码语言:javascript
运行
复制
@csrf_exempt
def cartpricecalculator(request):
    if request.method == 'POST':
        data = json.loads(request.POST)
        print(request.POST)

    return HttpResponse('200 Okay')

我不确定我做错了什么,任何帮助我都很感激。

EN

Stack Overflow用户

回答已采纳

发布于 2019-04-20 17:44:22

request.POST用于表单数据。你需要;

代码语言:javascript
运行
复制
data = json.loads(request.body)
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55768932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档