【问题标题】:How to stop Django from adding extra html elements to rendered widgets如何阻止 Django 向渲染的小部件添加额外的 html 元素
【发布时间】:2011-02-20 13:26:44
【问题描述】:

我有一个 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 标签。同样,我并没有完全使用表单对象,只是为了验证。我已经在为表单制作自定义模板,但希望继续使用收音机小部件。

【问题讨论】:

    标签: django django-templates django-forms


    【解决方案1】:

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

    然后只需手写你的表格:)

    【讨论】:

      【解决方案2】:

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

      {{ form.my_radiofield }}
      

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

      【讨论】:

      • 我实际上已经在这样做了。问题是输出小部件本身已格式化。
      • 那我不知道你在问什么。如果不是标记,格式化是什么意思?
      【解决方案3】:

      我猜你将不得不子类化必要的小部件并覆盖它们的render()-method!

      【讨论】:

        猜你喜欢
        • 2019-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-03
        • 2020-04-21
        • 2021-09-16
        • 1970-01-01
        • 2017-03-06
        相关资源
        最近更新 更多