0

是否可以关闭,然后重新打开/继续页面上的 html 表单?基本上我有一个电子表格网络前端从数据库中提取数据。但是,我需要将字段拆分为左 div 和右 div。原因是他们想要右侧 div 上的水平滚动条,因为它包含比左侧 div 更多的字段(左侧 div 字段就像没有滚动条的静态字段),这是为了复制现有电子表格的外观。

我决定在我的模板中使用两个 for 循环来做到这一点。第一个循环生成页面的左侧,然后关闭左侧的 div,第二个循环生成页面的右侧,然后关闭右侧的 div。

由于我这样做的方式,我遇到了一个问题,即在关闭第一个表单之前我有很多表单元素。

<div left>
   <% for bla in bla %}
       <form id="{{ bla.id }}"><submit>
       <input value="{{ bla.name}}"><input value="{{ bla.number }}">
   {% endfor %}
</div>
<div right>
    {% for bla2 in bla2 %}
       <input value="{{ bla2.address}"><input value="{{ bla2.state }}">
       </form>
    {% endfor %}
</div> 

显然我遇到了问题,因为当您查看由类似于上面的代码生成的 html 时,您有许多表单元素在生成第二个 div 之前不会关闭。所以我的 POST 数据始终是最后一条记录。

我尝试过,我给表单一个名称和 ID,即 {{ bla.id }}。然后我在第一个循环中关闭表单,并在第二个循环中放置一个具有相同 id 和名称 {{ bla.id }} 的新标签。

我以为该页面会知道此表单是先前表单的延续,但可惜它不起作用,我似乎找不到解决方法。

也许我的整个逻辑都关闭了,我应该以不同的方式生成整个页面。也许我缺少一个简单的解决方案...

我希望我解释得足够好。

任何帮助将不胜感激,谢谢。

4

1 回答 1

0

[编辑]

从评论中,如果您想为每条记录提供一个提交按钮,您仍然可以使用下面概述的标记,将每个表单标签作为“行”循环。对象名称blahblah2有点误导,特别是如果所有字段都包含一个模型。

如果这些字段实际上都是同一模型的所有部分,那么 for 循环将简单地移到表单标记之外,而不是在每个“列”内。

如果您不想手动输出字段,另一种选择是使用模型表单集来生成模型表单的多个实例。您的标记将与下面概述的几乎相同,但是您将在表单集的循环之外为表单集的管理表单提供额外的字段。

例子:

<form action="." method="post" enctype="application/x-www-form-urlencoded">
    <div id="left_column">
        <fieldset>
            {% for bla in blah %}
                <input name="name" value="{{ bla.name}}" />
                <input name="number" value="{{ bla.number }}" />
            {% endfor %}
        </fieldset>
    </div>
    <div id="right_column">
        <fieldset>
            {% for bla2 in blah2 %}
                <input name="address" value="{{ bla2.address}" />
                <input name="state" value="{{ bla2.state }}" />
            {% endfor %}
        </fieldset>
    </div>
    <input type="submit" value="Submit" />
</form>

每个表单元素都需要一个名称属性,否则在 request.POST QueryDict 中找不到它们。表单标签必须包含您希望作为 POST 的一部分提交的所有元素,除非您通过 JavaScript 进行 POST 并通过 JavaScript 收集值。

于 2013-02-06T01:46:57.710 回答