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

在Django 1.5中为表单标签添加属性,django,python-2.7,django-1.5,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 Characte

我有一些代码看起来像:

  #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)
#form.html
{{form.partion.label_tag}
{{form.partion}}
{{form.character\u name.label\u tag} {{form.character\u name} #form.py 类字符表单(forms.Form): 派系选择=( (‘西斯’、‘西斯帝国’), (“共和国”、“共和国联盟”) ) 派系=表单.ChoiceField(选项=派系\选项) character\u name=forms.CharField(最大长度=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>

{{form.partion.label}:
{{form.partion}}
{{form.character_name.label}}: {{form.character\u name}
我以前使用过Rails,您可以按照以下方式进行操作:

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

希望在django也能找到同样容易的解决方案。我原以为使用
form.fieldname.label_标记(attrs={'class':'custom-class-name})
会奏效,但可惜我被卡住了。非常感谢您的洞察力。

为此,我一直使用

  • 安装:pip安装django小部件调整
  • 在django应用程序之后和应用程序之前的settings.py中将“widget_tweaks”添加到已安装的_应用程序中
  • 将{%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"}}
    
    您还可以通过根据类型包括代码段来测试字段类型以获得调整后的输出。我就是这么做的。 去查阅widget_调整的文档 它在Django 1.6和1.7上对我有效
    希望它能帮助你

    看看:了解一些想法。也许这会有帮助:另一方面,请尝试将你的应用程序移植到一个更新的Django,如果可能的话,就像1.5一样。可以通过:'character\u name=forms.CharField(max\u length=100,widget=forms.TextInput(attrs={class':'foo')向实际输入添加一个类)但对于标签来说,情况并非如此。我将不得不对此进行研究,但希望非第三方解决方案能够显现出来。