当我定义一个类似于这样的 Django 表单类时:
def class MyForm(forms.Form):
check = forms.BooleanField(required=True, label="Check this")
它扩展为如下所示的 HTML:
<form action="." id="form" method=POST>
<p><label for="check">Check this:</label> <input type="checkbox" name="check" id="check" /></p>
<p><input type=submit value="Submit"></p>
</form>
我希望复选框输入元素在复选框后面有一个标签,而不是相反。有没有办法说服 Django 这样做?
[编辑]
感谢 Jonas 的回答 - 虽然它解决了我询问的问题(复选框标签呈现在复选框的右侧),但它引入了一个新问题(所有小部件标签都呈现在其小部件的右侧......)
我想避免覆盖 _html_output() 因为它显然不是为它设计的。我想出的设计是在 Field 类中实现一个字段 html 输出方法,覆盖布尔字段的方法并在 _html_output() 中使用该方法。遗憾的是,Django 开发人员选择了不同的方式,我希望尽可能地在现有框架内工作。
CSS 听起来是一种不错的方法,只是我对 CSS 的了解不够多,无法解决这个问题,甚至无法决定我是否喜欢这种方法。此外,我更喜欢仍然类似于最终输出的标记,至少在渲染顺序上是这样。
此外,由于为任何特定标记拥有多个样式表是合理的,因此在 CSS 中执行此操作可能意味着必须为多种样式执行多次,这几乎使 CSS 成为错误答案。
[编辑]
好像我在下面回答我自己的问题。如果有人对如何做到这一点有更好的想法,请不要害羞。