Django模板呈现程序重新排序div和table元素,打破了jquery库

Django模板呈现程序重新排序div和table元素,打破了jquery库,django,Django,我正在使用Django 1.6和Django formset js库扩展,在客户端使用JQuery动态调整表单集的大小。此库要求您将表单的某些元素包装在命名div中 我希望制作一张桌子,里面有我所有的表格。根据文档和以前的经验,使用{{form.as_table}}将表单呈现为一组。。。表行 但是,Django呈现HTML的方式使我的包装div为空且不匹配。div也会移到表外,而不是包装相应的。。。排。当问题没有在{{form.as_p}或{{form.as_ul}中重现时,为什么呈现程序在表形

我正在使用Django 1.6和Django formset js库扩展,在客户端使用JQuery动态调整表单集的大小。此库要求您将表单的某些元素包装在命名div中

我希望制作一张桌子,里面有我所有的表格。根据文档和以前的经验,使用{{form.as_table}}将表单呈现为一组。。。表行

但是,Django呈现HTML的方式使我的包装div为空且不匹配。div也会移到表外,而不是包装相应的。。。排。当问题没有在{{form.as_p}或{{form.as_ul}中重现时,为什么呈现程序在表形式中会以这种方式运行

模板: {view.form%中窗体的%s} {{form.as_table}} 删除表格 {%endfor%} 呈现的HTML: ... ... ...
好吧,这实际上是我的新手HTML错误。我想到的是一组花括号,而不是渲染树的一个元素

经过进一步调查,我发现混合和是违反HTML标准的行为,会导致未定义的行为。具体而言:

将div放入表中时需要记住的一点是,div需要位于特定的表单元格中,也就是说位于tr或th元素中的td元素中。

因此,Django将div从表中分离出来可能是在验证过程或类似过程中有意完成的。此外,其行为与此处完全相同,因此这不是解决方案

我可以通过将每个表单包装在自己的表中来纠正此问题,该表完全包含在div中。然后将模板呈现为有效的HTML并按预期工作:

模板:
<form>
  <div id="formset" data-formset-prefix="{{ view.form.prefix }}">
    <!-- .... -->      
    <div data-formset-body="">
      {% for form in view.form %}
      <div data-formset-form="">
        <table>
          {{ form.as_table }}
          <tr>
            <td>
              <button data-formset-delete-button="" type="button" >Delete form</button>
            </td>
          </tr>
        </table>
      </div>
      {% endfor %}
    </div>
    <!--  .... -->     
  </div>
</form>