通过AJAX发布Django formset

时间:2015-08-12 07:50:25

标签: javascript python django formset

在这里,django的新手。

我在Django中使用formset作为向导过程中的一个步骤的一部分,我想在完成该过程后提交它们(不是通过经典提交)。我想通过POST使用Javascript将其与其他数据一起发送。

有没有其他方法可以逐个序列化所有表单并将它们“手动”发送到json数组中?将它们作为“formset”发送是否可行?

我的例子:

在views.py中

formset = formset_factory(CustomerForm, extra=customer_number)
return render (request, 'customer/customer_info.html', {'customerformset':formset})
模板中的

{% for form in customerformset %}
{{form}}
{% endfor %}

在渲染的html中

<input class="form-control input-sm" maxlength="30" name="form-0-name" placeholder="Name" required="true" type="text">
<input class="form-control input-sm" maxlength="30" name="form-0-surname" placeholder="Surname" required="true" type="text">
<input class="form-control input-sm" maxlength="30" name="form-0-email" placeholder="Email" required="true" type="text">

2 个答案:

答案 0 :(得分:2)

尽管表单与Django的观点是分开的,但在HTML中它们都包含在同一个<form>元素中。所以你可以一次序列化它们:

data = $('form').serialize();

请注意,这不会转换为JSON,也不需要这样做:这会将值转换为普通的表单编码数据,这些数据可以直接发布并通过标准{{1}在Django中使用}。

答案 1 :(得分:0)

您可以在django中使用表单向导,每个步骤可以具有完全不同的表单类。这些信息可以存储在cookie或Session中,一旦最终提交(并且经过验证,请记住,就像任何其他形式一样),信息将从会话中删除。

class ContactWizard(AccessMixin, NamedUrlSessionWizardView):

通常可以使用向导,但是如果要添加例如,它可能变得非常棘手。注册/登录之间的步骤。