【问题标题】:Adding attributes to form labels in Django 1.5在 Django 1.5 中为表单标签添加属性
【发布时间】:2014-12-03 09:27:39
【问题描述】:

我有一些看起来像这样的代码:

  #form.html
  <form action="/form-action" method="post">
    {{form.faction.label_tag}}
    {{form.faction}}<br />
    {{form.character_name.label_tag}}
    {{form.character_name}}
  </form>

  #form.py
  class CharacterForm(forms.Form):
    FACTION_CHOICES = (
      ('Sith', 'Sith Empire'),
      ('Republic', 'Republic Alliance')
    )
    faction = forms.ChoiceField(choices=FACTION_CHOICES)
    character_name = forms.CharField(max_length=100)

但是我想在 html 输出的标签标签上有一个指定的类。我知道我能做到:

  <form action="/form-action" method="post">
    <label for="id_faction" class="foo">{{form.faction.label}}:</label>
    {{form.faction}}<br />
    <label for="id_character_name" class="bar">{{form.character_name.label}}:</label>
    {{form.character_name}}
  </form>

我以前使用过 Rails,您可以按照以下方式做一些事情:

<%= f.label :field, class: "baz"  %>

并希望在 django 中有同样简单的解决方案。我认为使用form.field-name.label_tag(attrs={'class':'custom-class-name'}) 会成功,但我被卡住了。任何见解都值得赞赏。

【问题讨论】:

标签: django python-2.7 django-1.5


【解决方案1】:

为此我总是使用widget_tweaks

  1. 安装它:pip install django-widget-tweaks。
  2. 在 django 应用之后和您的应用之前的 settings.py 中将“widget_tweaks”添加到 INSTALLED_APPS。
  3. 将 {% load widget_tweaks %} 添加到您要自定义的模板顶部。

现在为 form1 的字段“name”添加一个类:

{{ form1.name|add_class:"baz" }}

或添加 2 个或更多

{{ form1.name|add_class:"baz baz2 baz3" }}

这会将 class="baz baz2 baz3" 添加到您的字段 html 输出中

你也可以添加属性:

{{ form1.name|attr:"size:200"|attr:"color:blue"}}

将两者结合起来^^

{{ form1.name|add_class:"baz baz2 baz3"|attr:"size:200"|attr:"color:blue"}}

您还可以通过根据类型包含 sn-ps 来测试适应输出的字段类型。这就是我所做的。 去查阅 widget_tweaks 的文档 它适用于 Django 1.6 和 1.7 希望对你有帮助

【讨论】:

  • 我将不得不对此进行研究,但希望非第三方解决方案能够自行显现。
猜你喜欢
  • 2022-10-04
  • 2017-09-17
  • 2011-09-22
  • 2011-03-08
  • 2013-07-04
  • 2012-04-28
  • 1970-01-01
  • 2016-09-20
相关资源
最近更新 更多