【问题标题】:Django <input> inside <label><label> 内的 Django <input>
【发布时间】:2011-01-06 18:24:10
【问题描述】:

一些前端专家声称用&lt;label&gt;(隐式标签)包装&lt;input&gt;是一种更好的做法(与显式标签相比,即使它们具有for属性)。

不管是什么原因,我想看看如何在技术上以一种优雅的方式用 Django 完成。

【问题讨论】:

标签: django input label implicit explicit


【解决方案1】:

编写您自己的Widgets 并将它们用于您的Forms

【讨论】:

  • Form._html_output 控制输出,而不是小部件。
  • @kmt Widgets 有一个 render 方法,可以为 Widget 本身生成标记;你也可以让它产生label 标签(尽管你必须确保你的WidgetBoundField 不会以某种方式打印它自己的label)。需要明确的是:我不推荐这个。一方面,这是(在我看来)没有任何好处的 PITA。此外,由于labels 在一列中,而inputs 等在另一列中,因此可能会破坏大多数布局。
  • 我没有看过其他版本,但在 1.2.3 Form._html_output 中会将BoundField 标签和Widget 的输出附加到它的输出中。这就是我无法控制的,除非我重写该方法(这是一个的想法)。
  • @kmt 我相信,如果您使用WidgetsField 对象指定label='',这将防止双重label 行为,基于从@ 读取此行987654340@构造函数:code.djangoproject.com/browser/django/trunk/django/forms/…
  • @kmt 是的,这绝对是一个 hack。在这个级别调整东西通常是一个很好的指标,您可能希望完全避免使用 Django 表单。也许您应该手动完成,或者像 WTForms 这样的东西更像是您的一杯茶? wtforms.simplecodes.com 在依赖项之上维护补丁只会让你(或至少对我)产生影响。幸运的是,这似乎不是一个快速移动的目标。
猜你喜欢
  • 1970-01-01
  • 2012-07-02
  • 2013-03-19
  • 2021-12-28
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-18
相关资源
最近更新 更多