在Django 1.5中添加表单标签的属性

时间:2014-10-08 16:17:52

标签: django python-2.7 django-1.5

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

  #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输出的label标签上有一个指定的类。我知道我能做到:

  <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'})会解决问题但是我很困难。任何见解都表示赞赏。

1 个答案:

答案 0 :(得分:0)

为此,我总是使用widget_tweaks

  1. 安装它:pip install django-widget-tweaks。
  2. 添加&#39; widget_tweaks&#39; django应用之后和应用之前的settings.py中的INSTALLED_APPS。
  3. 将{%load widget_tweaks%}添加到您要自定义的模板的顶部。
  4. 现在为字段添加一个类&#34; 名称&#34; form1 执行:

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

    或添加2个或更多

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

    class =&#34; baz baz2 baz3&#34; 添加到您的字段html输出

    您还可以添加属性:

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

    并结合两个^^

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

    您还可以通过根据类型包含片段来测试适合的输出的字段类型。这就是我的所作所为。 去咨询widget_tweaks的文档 它适用于Django 1.6和1.7 希望它能帮到你