如何阻止Django向渲染的小部件添加额外的html元素

时间:2010-05-17 18:39:20

标签: django django-templates django-forms

我有一个Django单选按钮组,它按如下方式呈现为HTML:

<ul>
<li><label for="id_package_id_0"><input type="radio" id="id_package_id_0" value="1" name="package_id" /> Test 256</label></li>
<li><label for="id_package_id_1"><input type="radio" id="id_package_id_1" value="2" name="package_id" /> Test 384</label></li>
<li><label for="id_package_id_2"><input type="radio" id="id_package_id_2" value="3" name="package_id" /> Test 512</label></li>
<li><label for="id_package_id_3"><input type="radio" id="id_package_id_3" value="4" name="package_id" /> Test 768</label></li>
<li><label for="id_package_id_4"><input type="radio" id="id_package_id_4" value="5" name="package_id" /> Test 1024</label></li>
</ul>

我需要它来渲染而不是列表。我知道form.as_p,form.as_table和form.as_ul。他们不会帮助我,因为他们继续添加额外的HTML标签。同样,我没有使用表单对象,它只是用于验证。我正在为表单做一个自定义模板,但希望继续使用无线电小部件。

3 个答案:

答案 0 :(得分:0)

查看Django 1.2(今天发布),其中包括内置模型验证。

然后手工写出你的表格:)

答案 1 :(得分:0)

要仅渲染表单中的一个字段,您需要在模板中输出您的字段,如下所示:

{{ form.my_radiofield }}

这将只输出一个小部件而没有任何额外的表,p或ul标记。您可以阅读有关here的更多信息。

答案 2 :(得分:0)

我想你必须继承必要的小部件并覆盖他们的render() - 方法!