Django中<label>标签内的<input>元素

8
一些前端专家声称将<input>元素包装在<label>元素中(隐式标签)是一种更好的实践方法(与显式标签相比,即使它们带有for属性)。
无论出于何种原因,我想看到如何以优雅的方式在Django中实现这个技术。

2
哪些前端专家?在哪里?你能提供一个链接吗? - Joe D
1
与我一起工作的人进行离线讨论。 - kmt
@Joe D,Zurb Foundation使用它,这是链接:http://zurb.com/article/195/make-web-forms-suck-less-with-labels - Nils
1个回答

3

编写自己的小部件并在表单中使用它们。


1
Form._html_output 控制输出,而非小部件。 - kmt
3
Widgets拥有一个render方法,用于产生Widget本身的标记; 你也可以让它产生label标签(尽管你必须确保WidgetBoundField不会以某种方式打印出自己的label)。需要明确的是:我不建议这样做。首先,这对于没有任何好处而言,在我的眼中很麻烦。此外,它很可能会破坏大多数布局,因为labels在一列中,而inputs等在另一列中。 - Hank Gay
1
我没有看过其他版本,但在1.2.3中,Form._html_output会将BoundField标签和Widget的输出都附加到其输出中。这就是我无法控制的,除非我覆盖该方法(这是一个不好的想法)。 - kmt
是的,但我认为这不相关。在这里看一下:http://code.djangoproject.com/browser/django/trunk/django/forms/forms.py#L161 。我能想到的最简单的解决方案是覆盖BoundField.label_tag以不关闭标签并在normal_row中自己关闭它(http://code.djangoproject.com/browser/django/trunk/django/forms/forms.py#L231)。 - kmt
1
@kmt 是的,这绝对是一个hack。在这个级别上调整东西通常是一个很好的指标,表明您可能希望完全避免使用Django表单。也许您应该手动完成,或者像WTForms这样的东西更适合您?http://wtforms.simplecodes.com/ 在依赖项之上维护补丁只会让你感到疲惫(至少对我来说是这样)。幸运的是,这似乎不是一个极其快速移动的目标。 - Hank Gay
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接