2017-07-07 37 views
0

我在模板中传递两个带有不同前缀的表单并且每个表单都有自己的提交按钮,但是如何从提交按钮中的这两个表单中获取数据它们中的一个,以及如何区分哪个表单按钮被按下在Django中区分具有不同前缀的相同表单的实例

return render(request,'part_details.html', {'part_stock_form': forms.part_stock_form(prefix='add'),'part_stock_edit':forms.part_stock_form(prefix='edit')}) 

模板:add_app形式对象

<form id="add_app_form" method="post" action="{% url 'parts:part_app_model' part_temp.part_id %}"> 
    {% csrf_token %} 
    {{ add_app.applicable }} 
    <input type="submit"> 
</form> 

模板:edit_app形式对象

<form method="post" action="{% url 'parts:part_app_model' part_temp.part_id %}"> 
    {{ edit_app.applicable }} 
    <input type="submit"> 
</form> 

回答

3

,因为你有2个提交按钮的名称和检查它们,就像

<input type="submit" name="fom1">sumbit formm 1 

<input type="submit" name="fom2">sumbit formm 2 

if 'fom1' in request.POST: 
    #statements 
elif 'fom2' in request.POST: 
    #statements 
2

一个简单的方法是检查POST数据的键。 假设你有一种形式的field1和另一种形式的field2,但两种形式都不存在。

if 'field1' in request.POST.keys(): 
    #statements 
elif 'field2' in request.POST.keys(): 
    #statements 

另一种方式是根据形式action属性将它们发送到不同的URL,然后定义单独的视图对于他们来说,并相应地配置urls.py。 希望它有帮助。

+0

其关键是你在说什么?他们是同一种形式的实例不会有相同的密钥? –

+0

如果您使用POST提交表单,则django服务器将以django.http.request.QueryDict对象的形式接收数据。它具有键值对,如Python字典。 “request.POST.keys()”返回密钥列表。 使用这些: “打印request.POST.keys()” “print request.POST” 并且您可以在终端中看到您运行服务器的输出。 – aashu

相关问题