我的模板内容包含多个按钮的多个表单。
我已经阅读了这些主题:
Proper way to handle multiple forms on one page in Django
How can I build multiple submit buttons django form?
How can I access the form submit button value in Django?
我完全一样,包括"名称"和"价值"在表单的输入中(也尝试使用按钮标记)
但"名称"属性在POST请求中不存在。我做错了什么?
模板:
<div class="container" align="center" style="border: solid 3px red">
<h3>Form 1</h3>
<form id="form_step_1" method="post" action="{% url 'ajax_order_data' %}" align="center">
{% csrf_token %}
{{ FormStep1 }}
<button type="submit" name="step_1" value="step_1">button_step1</button>
</form>
</div>
<br>
<div class="container" align="center" style="border: solid 3px red">
<h3>Form 2</h3>
<form id="form_step_2" method="post" action="{% url 'ajax_order_data' %}" align="center">
{% csrf_token %}
{{ FormStep2 }}
<button type="submit" name="step_2" value="step_2">button_step2</button>
</form>
</div>
<script>
var form_1 = $("#form_step_1");
var form_2 = $("#form_step_2");
form_1.submit(function(e){
e.preventDefault();
var url = $(form_1).attr('action');
$.ajax({
type: 'POST',
url: url,
data: form_1.serialize(),
dataType: 'json',
success: function (data) {smth_1}
})
});
form_2.submit(function(e){
e.preventDefault();
var url = $(form_2).attr('action');
$.ajax({
type: 'POST',
url: url,
data: form_2.serialize(),
dataType: 'json',
success: function (data) {smth_2}
})
});
</script>
视图:
def somefunc(request):
if request.method == 'POST':
if 'step_1' in request.POST:
答案 0 :(得分:1)
您已明确禁用了正常的表单提交过程,并在Ajax中将数据作为JSON发送。所以你不能在Django中使用处理表格编码数据的常规方法,因为你还没有。
相反,你需要反序列化请求的主体,这会给你一个字典:
data = json.loads(request.body)
if 'step_1' in data: