如何在模板中访问django表单字段名

如何在模板中访问django表单字段名,django,django-forms,Django,Django Forms,我有一个modelform,我想迭代模板中的表单字段,但同时,当我遇到某些字段时,有条件地呈现额外的html。目前,我正在从field.html\u name中提取字段名,但我不确定这是否是最好的方法(这感觉有点黑客味,好像我应该使用getattr()过滤器之类的东西……) {%用于表单%]中的字段 {{field}} {%if field.html_name==“location”%} {%endif%} {%endfor%} 您是否考虑过使用小部件或创建自己的自定义小部件 例如:仅向现有输入

我有一个modelform,我想迭代模板中的表单字段,但同时,当我遇到某些字段时,有条件地呈现额外的html。目前,我正在从
field.html\u name
中提取字段名,但我不确定这是否是最好的方法(这感觉有点黑客味,好像我应该使用
getattr()
过滤器之类的东西……)

{%用于表单%]中的字段
{{field}}
{%if field.html_name==“location”%}
{%endif%}
{%endfor%}

您是否考虑过使用小部件或创建自己的自定义小部件

例如:仅向现有输入添加css类或类似类

或者创建一个完整的自定义小部件(看看它是如何实现的)

然后表单可以在模板中呈现,只需

 {{ form }}

我不知道你是什么意思,但你可以试试这个

{% for field in form %}
   {{ field }}
   {% if field.label == 'Location' %}
      <h1>Hi</h1>
   {% endif %}
{% endfor %}

如果我不误解你的意思,我也有同样的情况。我的解决方案是
field.name
。代码示例:

{% if field.name == 'password' %}
   <input type="password" name="password" class="form-control" placeholder="{% trans 'Enter your password' %}">
{% else %}
   <input type="email" name="email" class="form-control" placeholder="{% trans 'Enter your email address' %}">
{% endif %}
{%if field.name=='password%}
{%else%}
{%endif%}

自定义html的作用是什么?它添加了另一个div。这主要是因为名称为“location”的字段是一个外键,div包含一个允许修改位置对象的。我现在找不到代码的确切部分,但django admin在使用管理模型表单时也会为外键对象添加一个add按钮,因此可能值得研究它们在哪里这样做……这对我没有帮助,由于它与设置/获取
field.html\u name
@cowbert的方法完全相同,我想这应该是可以接受的答案,因为它实际上回答了这个问题?我不认为这是对OPYes的改进,我在通过循环打印字段的同时查找field.name更好,仅在模板中使用并保留演示文稿信息
 {{ form }}
{% for field in form %}
   {{ field }}
   {% if field.label == 'Location' %}
      <h1>Hi</h1>
   {% endif %}
{% endfor %}
location = forms.CharField(widget=forms.TextInput(
        attrs={'class': 'yourclass', 'placeholder': 'Enter your location',
               }), label=u'Location', max_length=100, required=True)
{% if field.name == 'password' %}
   <input type="password" name="password" class="form-control" placeholder="{% trans 'Enter your password' %}">
{% else %}
   <input type="email" name="email" class="form-control" placeholder="{% trans 'Enter your email address' %}">
{% endif %}