django使用一个提交按钮提交两种不同的表单

发布于 2021-01-29 19:35:08

是否可以使用Django中的一个提交按钮提交两种不同的形式?我有一种形式称为“仪器”和4种相等形式的“配置”。现在,我想始终提交一个配置和工具。例如instrument
+ config 1和instrument + config 2,每个配置都有自己的提交按钮。

我已经在配置表单中用一个按钮尝试过:

<input onclick="submitForms()" class="btn btn-primary cfg" type="submit" value="Start" >

并调用js函数“ onclick”:

submitForms = function(){
    console.log('ok'); //only for testing
    document.forms["firstForm"].submit();
    document.forms["secondForm"].submit();
}

这是我在views.py中的方法:

if request.method == 'POST':
        form1 = dataproviderInstrumentForm(request.POST)
        form2 = dynamicTimeseriesForm(request.POST)
        print(request.POST)
        if form1.is_valid() or form2.is_valid(): 
            # do some stuff

else:
    form1 = dataproviderInstrumentForm() # an unbound form
    form2 = dynamicTimeseriesForm() # an unbound form
关注者
0
被浏览
97
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    与其<form ..>在HTML中使用多个标签,不如仅使用一个<form>标签并在其下添加所有形式的字段。

    范本范例

    <form >
        {{ form1.as_p }}
        {{ form2.as_p }}
        {{ form3.as_p }}
    </form>
    

    因此,当用户提交表单时,您将在视图中获取所有表单数据,然后您就可以在视图中进行操作。如

    if request.method == 'POST':
            form1 = Form1(request.POST)
            form2 = Form2(request.POST)
            print(request.POST)
            if form1.is_valid() or form2.is_valid():
    

    form prefix在这种情况下最好使用。

    所以你可以做

    if request.method == 'POST':
            form1 = Form1( request.POST,prefix="form1")
            form2 = Form2( request.POST,prefix="form2")
            print(request.POST)
            if form1.is_valid() or form2.is_valid(): 
    else:
            form1 = Form1(prefix="form1")
            form2 = Form2(prefix="form2")
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看