Ajax + Django-在“ data”参数中结合form.serialize和stringified JSON对象

埃德加·纳瓦萨迪安(Edgar Navasardyan)

我正在尝试将字符串化的json参数和序列化的形式传递到Django视图中,如下所示:

JS:

var selected_items = legalEntitiesVendorAgreements_selectize.items;  
var data = $form.serializeArray();  
for (var i = 0; i < selected_items.length; ++i)
{           
    data.push({'legal_entity_own_id' : selected_items[i]});
}

看法:

def my_view (request):
list_data = json.loads(request.body)
for x in list_data:
    // Do smth with x['some_predefined_field']

基本上,我在这里有两个大问题:

  1. 如何在data参数中组合$ m_form和json_str
  2. 在解析request参数的过程中,我的Django视图代码如何发生变化。具体来说,willjson.loads(request.body)和for循环仍然有效,并且Django语法my_form = MyForm(request.POST)仍然有效

而且甚至不知道从什么时候开始。我已经研究这个,但我有一个坏的感觉,$m_form + json_str是不是这里的正确途径。请帮帮我!

丹尼尔·罗斯曼

您正在尝试在此处混合和匹配表单数据和JSON。您需要选择一种,然后将另一种转换为该格式。

例如,您可以在序列化之前将表单数据添加到obj中:

form_data = $m_form.serializeArray();
json_obj["form_data"] = form_data;
json_str = JSON.stringify(json_obj);

现在您的Django视图可以通过来访问反序列化的表单数据list_data["form_data"]

或者,您可以以标准方式发布表单,并将JSON作为该表单内的值:

form_data = $m_form.serialize();
form_data["json_data"] = json_obj;
$.post(url, form_data);

现在,您的Django视图将获得一个标准的POST字典,您可以像平常一样访问其大多数元素,但可以对json_data元素进行特殊的反序列化。

form = MyForm(request.POST)
json_data = json.loads(request.POST["json_data"])

(表格应仅忽略其他字段)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档