当前位置: 首页 > 面试题库 >

Django:即使键存在,将AJAX POST数据传递给Django也会产生MultiValueDictKeyError

雷逸仙
2023-03-14
问题内容

我的Ajax调用中包含数据:

data: { hint: {'asdf':4} },

我觉得我应该能够使用

request.POST['hint'] # and possibly request.POST['hint']['asdf'] to get 4

但是这个错误会带来麻烦。我看着

MultiValueDictKeyError at /post_url/
"'hint'"

当我打印发布数据时,我奇怪地发现字典格式错误:

<QueryDict: {u'hint[asdf]': [u'4']}>

我应该如何正确传递数据,以便在Python中保留相同的结构并以与JS中相同的方式使用它?


问题答案:

首先,在$.ajax通话中,不要直接将所有POST数据放入data属性中,而是将其添加到名称为的另一个属性中json_data。例如:

data: { hint: {'asdf':4} },

应该变成:

data: { json_data: { hint: {'asdf':4} } },

现在,json_data应该使用将转换为纯字符串JSON.stringify

data: { json_data: JSON.stringify({ hint: {'asdf':4} }) },

这会将数据作为字符串传递给Django,可以通过以下方式检索:

data_string = request.POST.get('json_data')

可以将其转换为类似dict的对象(假设顶部json导入import json):

data_dict = json.loads(data_string)

或者,没有中间体data_string

data_dict = json.loads(request.POST.get('json_data'))
print data_dict['hint']['asdf'] # Should print 4


 类似资料:
  • 问题内容: 我正在使用Django和Apache来提供网页。我的JavaScript代码当前包含一个数据对象,该数据对象的值将基于用户从选项菜单中的选择而显示在各种HTML小部件中。我想从Python字典中导出这些数据。我想我知道如何将JavaScript代码嵌入HTML中,但是如何(即时)将数据对象嵌入该脚本中,以便脚本的功能可以使用它? 换句话说,我想从Python字典中创建一个JavaScr

  • 问题内容: 我正在尝试使用Django和D3.js编写非常基本的条形图。我有一个名为play的对象,其中datetime字段称为date。我想做的是显示按月分组的播放次数。基本上我有两个问题: 我如何按月份将这些分组,并计算当月的播放次数 将这些信息从Django转换为D3可用的最佳方法是什么。 现在,我在这里查看了其他答案,并尝试了 这接近于我想要的信息,但是当我尝试将其输出到模板中时,它在月末

  • 问题内容: 如何将参数传递给表单? 根据以下答案进行编辑: 问题答案: 你应该定义表单的方法,如下所示: 没有意义。创建表单后,必须将属性添加到窗口小部件。尝试这样的事情:

  • 问题内容: 第一次海报,长期的读者。我花了很长时间寻找答案,这使我认为这是我所缺少的基本知识。 我试图提取保存在数据库表中的数据,并将其传递通过,以显示在Highcharts图中。在检查源代码时,我没有从Django或客户端收到任何错误。 使用:Django 1.7和Python 3.4 views.py: get_data()函数: 模板: 最后的网址: 一切似乎都在运行,但Highchart图

  • 问题内容: 我想知道在视图之间传递数据的“最佳”方法是什么。创建不可见字段并使用POST传递它是否更好,还是应该在URL中对其进行编码?还是有更好/更简便的方法? 问题答案: 在视图之间传递数据有多种方法。实际上,这与在两个不同的脚本之间传递数据的问题并没有什么大的不同,当然还引入了一些进程间通信的概念。我想到的一些事情是- GET请求 -第一个请求命中view1->将数据发送到浏览器->浏览器重

  • 问题内容: 这在Django 1.9中用form_kwargs修复。 我有一个看起来像这样的Django表单: 我称这种形式的东西是这样的: 登录用户在哪里。这按预期工作。 我的问题是,我现在想将此单一表单转换为表单集。我不知道的是在创建表单集时如何将会员信息传递给各个表单。根据文档来制作一个表单集,我需要做这样的事情: 然后我需要这样创建它: 现在如何以这种方式将affiliate = requ