Django模板呈现程序重新排序div和table元素,打破了jquery库
我正在使用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: ... ... ...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}中重现时,为什么呈现程序在表形
好吧,这实际上是我的新手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>